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

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

  const days = await prisma.itineraryDay.findMany({
    where: { bookingId: id },
    orderBy: { dayNumber: 'asc' },
    include: {
      items: {
        orderBy: { sortOrder: 'asc' },
      },
    },
  })

  return NextResponse.json(days)
})

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

  const booking = await prisma.booking.findUnique({ where: { id } })
  if (!booking) throw new AuthError('Booking not found', 404)

  const day = await prisma.itineraryDay.create({
    data: {
      bookingId: id,
      dayNumber: data.dayNumber,
      date: new Date(data.date),
      title: data.title || null,
      description: data.description || null,
    },
    include: {
      items: true,
    },
  })

  return NextResponse.json(day)
})
