import PreRegistration from '../../../models/preRegistration.js'
import { connectDB } from '../../../utils/mongoose.js'

export default defineEventHandler(async (event) => {
  await requireAdmin(event)
  const id = getRouterParam(event, 'id')
  const body = await validateBody(event, preRegistrantStatusUpdateSchema)
  await connectDB()

  const existing = await PreRegistration.findById(id)
  if (!existing) {
    throw createError({ statusCode: 404, statusMessage: 'Pre-registrant not found' })
  }

  // Only allow status changes to pending/selected (invite/accept are handled by other endpoints)
  if (existing.status === 'accepted') {
    throw createError({ statusCode: 400, statusMessage: 'Cannot modify an accepted pre-registrant' })
  }

  const update = {}
  if (body.status !== undefined) update.status = body.status
  if (body.adminNotes !== undefined) update.adminNotes = body.adminNotes

  const updated = await PreRegistration.findByIdAndUpdate(id, update, { new: true }).lean()
  return updated
})
