51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import type { CollectionConfig } from "payload";
|
|
import { isAdmin } from "@/access";
|
|
|
|
export const GroupRegistrations: CollectionConfig = {
|
|
slug: "group-registrations",
|
|
labels: {
|
|
singular: "Gruppenanmeldung",
|
|
plural: "Gruppenanmeldungen",
|
|
},
|
|
admin: {
|
|
useAsTitle: "name",
|
|
defaultColumns: ["name", "email", "offer", "status", "registeredAt"],
|
|
group: "Buchungen",
|
|
description: "Anmeldungen und Bewerbungen für Gruppenangebote.",
|
|
},
|
|
access: {
|
|
read: isAdmin,
|
|
create: () => false,
|
|
update: isAdmin,
|
|
delete: isAdmin,
|
|
},
|
|
timestamps: true,
|
|
fields: [
|
|
{ name: "offer", type: "relationship", relationTo: "offers", label: "Angebot", 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: "phone", type: "text", label: "Telefon" },
|
|
{ name: "message", type: "textarea", label: "Nachricht / Motivation" },
|
|
{
|
|
name: "status",
|
|
type: "select",
|
|
label: "Status",
|
|
required: true,
|
|
defaultValue: "pending",
|
|
options: [
|
|
{ label: "Zu prüfen", value: "pending" },
|
|
{ label: "Angenommen", value: "accepted" },
|
|
{ label: "Warteliste", value: "waitlist" },
|
|
{ label: "Abgelehnt", value: "rejected" },
|
|
{ label: "Storniert", value: "cancelled" },
|
|
],
|
|
},
|
|
{ name: "registeredAt", type: "date", label: "Eingegangen am", defaultValue: () => new Date().toISOString(), admin: { position: "sidebar" } },
|
|
],
|
|
};
|