import Event from '../../../models/event.js' import { connectDB } from '../../../utils/mongoose.js' import { requireAdmin } from '../../../utils/auth.js' export default defineEventHandler(async (event) => { try { await requireAdmin(event) const eventId = getRouterParam(event, 'id') const body = await validateBody(event, adminEventUpdateSchema) await connectDB() const updateData = { ...body, startDate: new Date(body.startDate), endDate: new Date(body.endDate), registrationDeadline: body.registrationDeadline ? new Date(body.registrationDeadline) : null, updatedAt: new Date() } // Handle ticket data if (body.tickets) { updateData.tickets = { enabled: body.tickets.enabled || false, public: { available: body.tickets.public?.available || false, name: body.tickets.public?.name || 'Public Ticket', description: body.tickets.public?.description || '', price: body.tickets.public?.price || 0, quantity: body.tickets.public?.quantity || null, sold: body.tickets.public?.sold || 0, earlyBirdPrice: body.tickets.public?.earlyBirdPrice || null, earlyBirdDeadline: body.tickets.public?.earlyBirdDeadline ? new Date(body.tickets.public.earlyBirdDeadline) : null } } } const updatedEvent = await Event.findByIdAndUpdate( eventId, updateData, { new: true, runValidators: true } ) if (!updatedEvent) { throw createError({ statusCode: 404, statusMessage: 'Event not found' }) } return updatedEvent } catch (error) { if (error.statusCode) throw error console.error('Error updating event:', error) throw createError({ statusCode: 500, statusMessage: 'An unexpected error occurred' }) } })