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 { searchParams } = new URL(req.url)
  const search = searchParams.get('search') || ''

  const vehicles = await prisma.transportVehicle.findMany({
    where: search ? {
      OR: [
        { name: { contains: search, mode: 'insensitive' } },
        { registrationNo: { contains: search, mode: 'insensitive' } },
      ],
    } : undefined,
    include: {
      supplier: { select: { name: true } },
    },
    orderBy: { name: 'asc' },
  })

  return NextResponse.json(vehicles)
})

export const POST = safeHandler(async (req: Request) => {
  await requireAuth(['ADMIN', 'OPERATIONS'])
  const data = await req.json()

  const vehicle = await prisma.transportVehicle.create({ data })
  return NextResponse.json(vehicle, { status: 201 })
})
