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 sources = await prisma.tripSource.findMany({
    where: search ? {
      OR: [
        { name: { contains: search, mode: 'insensitive' } },
        { contactPerson: { contains: search, mode: 'insensitive' } },
      ],
    } : undefined,
    orderBy: { name: 'asc' },
  })

  return NextResponse.json(sources)
})

export const POST = safeHandler(async (req: Request) => {
  await requireAuth(['ADMIN', 'SALES'])
  const data = await req.json()
  const source = await prisma.tripSource.create({ data })
  return NextResponse.json(source, { status: 201 })
})
