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

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

  const totalCost = (data.quantity || 1) * (data.unitCost || 0)

  const item = await prisma.bookingItem.create({
    data: {
      bookingId: id,
      itineraryDayId: data.itineraryDayId || null,
      serviceType: data.serviceType,
      description: data.description,
      quantity: data.quantity || 1,
      unitCost: data.unitCost || 0,
      totalCost,
      hotelId: data.hotelId || null,
      activityId: data.activityId || null,
      notes: data.notes || null,
      sortOrder: data.sortOrder || 0,
    },
  })

  // Recalculate booking totalAmount
  const sum = await prisma.bookingItem.aggregate({
    where: { bookingId: id },
    _sum: { totalCost: true },
  })
  await prisma.booking.update({
    where: { id },
    data: { totalAmount: sum._sum.totalCost || 0 },
  })

  return NextResponse.json(item)
})
