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

export const PUT = safeHandler(async (req: Request, { params }: { params: Promise<{ routeId: string; priceId: string }> }) => {
  await requireAuth(['ADMIN', 'OPERATIONS'])
  const { priceId } = await params
  const data = await req.json()

  const updateData: any = {}
  if (data.vehicleType !== undefined) updateData.vehicleType = data.vehicleType
  if (data.seasonName !== undefined) updateData.seasonName = data.seasonName
  if (data.startDate !== undefined) updateData.startDate = new Date(data.startDate)
  if (data.endDate !== undefined) updateData.endDate = new Date(data.endDate)
  if (data.pricePerTrip !== undefined) updateData.pricePerTrip = parseFloat(data.pricePerTrip)
  if (data.pricePerKm !== undefined) updateData.pricePerKm = data.pricePerKm ? parseFloat(data.pricePerKm) : null
  if (data.currency !== undefined) updateData.currency = data.currency

  const pricing = await prisma.transportPricing.update({
    where: { id: priceId },
    data: updateData,
  })

  return NextResponse.json(pricing)
})

export const DELETE = safeHandler(async (_req: Request, { params }: { params: Promise<{ routeId: string; priceId: string }> }) => {
  await requireAuth(['ADMIN'])
  const { priceId } = await params
  await prisma.transportPricing.delete({ where: { id: priceId } })
  return NextResponse.json({ message: 'Deleted' })
})
