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 tours = await prisma.sICTour.findMany({
    where: search ? {
      name: { contains: search, mode: 'insensitive' },
    } : undefined,
    include: {
      _count: { select: { bookings: true } },
    },
    orderBy: { startDate: 'desc' },
  })

  return NextResponse.json(tours)
})

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

  const tour = await prisma.sICTour.create({
    data: {
      name: data.name,
      startDate: new Date(data.startDate),
      endDate: new Date(data.endDate),
      maxCapacity: data.maxCapacity,
      description: data.description || null,
      currency: data.currency || 'INR',
      pricePerPerson: data.pricePerPerson || 0,
      templateData: data.templateData || null,
    },
  })

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