Initial commit: ANOUMA website with Payload CMS, WebRTC meetings, and booking system
- Next.js 16 App Router site with the ANOUMA design system - Payload CMS (PostgreSQL) for offers, events, posts and page content - WebRTC video-call system with custom signaling server - SMTP email reminders and booking-request notifications - Customer accounts, calendar-based availability, and booking workflow
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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%" },
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
Reference in New Issue
Block a user