import * as z from 'zod'; import { apiError, apiSuccess, emailSchema, requiredString, } from '@kit/next/route-helpers'; import { getLogger } from '@kit/shared/logger'; import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client'; const EventRegisterSchema = z.object({ eventId: requiredString('Event-ID'), firstName: requiredString('Vorname'), lastName: requiredString('Nachname'), email: emailSchema, phone: z.string().optional(), dateOfBirth: z.string().optional(), parentName: z.string().optional(), parentPhone: z.string().optional(), }); export async function POST(request: Request) { const logger = await getLogger(); try { const body = await request.json(); const parsed = EventRegisterSchema.safeParse(body); if (!parsed.success) { return apiError(parsed.error.issues[0]?.message ?? 'Ungültige Eingabe'); } const { eventId, firstName, lastName, email, phone, dateOfBirth, parentName, parentPhone, } = parsed.data; const supabase = getSupabaseServerAdminClient(); const { error } = await supabase.from('event_registrations').insert({ event_id: eventId, first_name: firstName, last_name: lastName, email, phone: phone || null, date_of_birth: dateOfBirth || null, parent_name: parentName || null, parent_phone: parentPhone || null, status: 'registered', created_at: new Date().toISOString(), }); if (error) { logger.error( { error, context: 'event-register-insert' }, '[event-register] Insert error', ); return apiError('Anmeldung fehlgeschlagen', 500); } return apiSuccess({ message: 'Anmeldung erfolgreich' }); } catch (err) { logger.error( { error: err, context: 'event-register' }, '[event-register] Error', ); return apiError('Serverfehler', 500); } }