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

type Params = { params: Promise<{ id: string }> }

export const PUT = safeHandler(async (req: Request, { params }: Params) => {
  const session = await requireAuth()
  const { id } = await params

  const body = await req.json()
  const { status, message, reminderDate } = body

  const data: Record<string, unknown> = {}
  if (status !== undefined) data.status = status
  if (message !== undefined) data.message = message
  if (reminderDate !== undefined) data.reminderDate = new Date(reminderDate)

  const reminder = await prisma.reminder.update({
    where: { id },
    data,
    include: {
      query: { select: { queryNo: true } },
      booking: { select: { bookingNo: true } },
      payment: { select: { paymentNo: true } },
      createdBy: { select: { name: true } },
    },
  })

  return NextResponse.json(reminder)
})

export const DELETE = safeHandler(async (req: Request, { params }: Params) => {
  const session = await requireAuth()
  const { id } = await params

  await prisma.reminder.delete({
    where: { id },
  })

  return NextResponse.json({ success: true })
})
