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

export const GET = safeHandler(async (req: Request) => {
  await requireAuth()

  const fundAllocations = await prisma.fundAllocation.findMany({
    include: {
      booking: {
        select: { bookingNo: true },
      },
      supplier: {
        select: { name: true },
      },
    },
    orderBy: { createdAt: 'desc' },
  })

  return NextResponse.json(fundAllocations)
})

export const POST = safeHandler(async (req: Request) => {
  await requireAuth()
  const data = await req.json()

  const fund = await prisma.fundAllocation.create({
    data: {
      bookingId: data.bookingId,
      supplierId: data.supplierId,
      amount: parseFloat(data.amount),
      currency: data.currency || 'USD',
      status: data.status || 'BLOCKED',
      notes: data.notes || null,
    },
  })

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