import { NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma'
import { safeHandler, requireAuth } from '@/lib/auth'

export const GET = safeHandler(async (_req: Request, { params }: { params: Promise<{ id: string }> }) => {
  await requireAuth()
  const { id } = await params

  const passengers = await prisma.passenger.findMany({
    where: { bookingId: id },
    orderBy: { sortOrder: 'asc' },
  })

  return NextResponse.json(passengers)
})

export const POST = safeHandler(async (req: Request, { params }: { params: Promise<{ id: string }> }) => {
  await requireAuth()
  const { id } = await params
  const data = await req.json()

  const count = await prisma.passenger.count({ where: { bookingId: id } })

  const passenger = await prisma.passenger.create({
    data: {
      bookingId: id,
      name: data.name,
      type: data.type || 'ADULT',
      panNumber: data.panNumber || null,
      passportNumber: data.passportNumber || null,
      passportExpiry: data.passportExpiry ? new Date(data.passportExpiry) : null,
      email: data.email || null,
      phone: data.phone || null,
      sortOrder: count,
    },
  })

  return NextResponse.json(passenger, { status: 201 })
})
