import type { CollectionConfig } from "payload"; import { isAdmin } from "@/access"; export const EventRegistrations: CollectionConfig = { slug: "event-registrations", labels: { singular: "Anmeldung", plural: "Anmeldungen", }, admin: { useAsTitle: "name", defaultColumns: ["name", "email", "event", "status", "registeredAt"], group: "Inhalte", description: "Anmeldungen zu Terminen — wird beim öffentlichen Anmeldeformular befüllt.", }, access: { // Visitors register themselves through the public event page. create: () => true, read: isAdmin, update: isAdmin, delete: isAdmin, }, fields: [ { name: "event", type: "relationship", relationTo: "events", label: "Termin", required: true, index: true, }, { type: "row", fields: [ { name: "name", type: "text", label: "Name", required: true, admin: { width: "50%" } }, { name: "email", type: "email", label: "E-Mail", required: true, admin: { width: "50%" } }, ], }, { name: "status", type: "select", label: "Status", required: true, defaultValue: "registered", options: [ { label: "Angemeldet", value: "registered" }, { label: "Storniert", value: "cancelled" }, { label: "Teilgenommen", value: "attended" }, ], }, { name: "registeredAt", type: "date", label: "Registriert am", defaultValue: () => new Date().toISOString(), admin: { position: "sidebar", date: { pickerAppearance: "dayAndTime" } }, }, { type: "row", admin: { position: "sidebar" }, fields: [ { name: "reminder60Sent", type: "checkbox", label: "Reminder 60 Min. gesendet", defaultValue: false, admin: { width: "50%" }, }, { name: "reminder30Sent", type: "checkbox", label: "Reminder 30 Min. gesendet", defaultValue: false, admin: { width: "50%" }, }, ], }, ], };