feat: add CMS inquiries and group bookings
This commit is contained in:
@@ -78,6 +78,9 @@ export interface Config {
|
||||
availability: Availability;
|
||||
'availability-overrides': AvailabilityOverride;
|
||||
'booking-requests': BookingRequest;
|
||||
conversations: Conversation;
|
||||
'conversation-messages': ConversationMessage;
|
||||
'group-registrations': GroupRegistration;
|
||||
redirects: Redirect;
|
||||
'analytics-events': AnalyticsEvent;
|
||||
'analytics-daily-stats': AnalyticsDailyStat;
|
||||
@@ -98,6 +101,9 @@ export interface Config {
|
||||
availability: AvailabilitySelect<false> | AvailabilitySelect<true>;
|
||||
'availability-overrides': AvailabilityOverridesSelect<false> | AvailabilityOverridesSelect<true>;
|
||||
'booking-requests': BookingRequestsSelect<false> | BookingRequestsSelect<true>;
|
||||
conversations: ConversationsSelect<false> | ConversationsSelect<true>;
|
||||
'conversation-messages': ConversationMessagesSelect<false> | ConversationMessagesSelect<true>;
|
||||
'group-registrations': GroupRegistrationsSelect<false> | GroupRegistrationsSelect<true>;
|
||||
redirects: RedirectsSelect<false> | RedirectsSelect<true>;
|
||||
'analytics-events': AnalyticsEventsSelect<false> | AnalyticsEventsSelect<true>;
|
||||
'analytics-daily-stats': AnalyticsDailyStatsSelect<false> | AnalyticsDailyStatsSelect<true>;
|
||||
@@ -472,6 +478,30 @@ export interface Offer {
|
||||
* Aktiviert die Terminbuchung mit Kalenderauswahl auf der Angebotsseite.
|
||||
*/
|
||||
bookable?: boolean | null;
|
||||
/**
|
||||
* Gruppenangebote werden über Anmeldung, feste Wiederholung oder Bewerbungsfrist organisiert.
|
||||
*/
|
||||
bookingMode: 'individual' | 'group';
|
||||
groupRegistrationMode?: ('fixed' | 'capacity' | 'request') | null;
|
||||
groupSchedule?: {
|
||||
recurrence?: ('weekly' | 'monthly') | null;
|
||||
weekday?: ('monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday') | null;
|
||||
monthDay?: number | null;
|
||||
/**
|
||||
* z. B. 18:00 Uhr
|
||||
*/
|
||||
startTime?: string | null;
|
||||
/**
|
||||
* z. B. 20:00 Uhr
|
||||
*/
|
||||
endTime?: string | null;
|
||||
};
|
||||
groupCapacity?: number | null;
|
||||
registrationDeadline?: string | null;
|
||||
/**
|
||||
* Wird auf der Angebotsseite oberhalb des Anmeldeformulars angezeigt.
|
||||
*/
|
||||
groupInfo?: string | null;
|
||||
/**
|
||||
* z. B. „80 €“ oder „auf Anfrage“.
|
||||
*/
|
||||
@@ -602,6 +632,63 @@ export interface AvailabilityOverride {
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Kontakt- und Terminanfragen als durchsuchbare Konversationen.
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "conversations".
|
||||
*/
|
||||
export interface Conversation {
|
||||
id: number;
|
||||
subject: string;
|
||||
name: string;
|
||||
email: string;
|
||||
type: 'contact' | 'appointment' | 'group';
|
||||
status: 'open' | 'waiting' | 'closed';
|
||||
customer?: (number | null) | Customer;
|
||||
threadKey: string;
|
||||
lastMessageAt?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Einzelne Nachrichten innerhalb einer Anfrage. Antworten aus dem CMS werden automatisch per E-Mail verschickt.
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "conversation-messages".
|
||||
*/
|
||||
export interface ConversationMessage {
|
||||
id: number;
|
||||
conversation: number | Conversation;
|
||||
/**
|
||||
* Für Antworten im CMS „Anouma“ auswählen. Eingehende E-Mails werden automatisch als Anfragende Person gespeichert.
|
||||
*/
|
||||
senderType: 'visitor' | 'admin';
|
||||
senderName?: string | null;
|
||||
senderEmail?: string | null;
|
||||
body: string;
|
||||
externalMessageId?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Anmeldungen und Bewerbungen für Gruppenangebote.
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "group-registrations".
|
||||
*/
|
||||
export interface GroupRegistration {
|
||||
id: number;
|
||||
offer: number | Offer;
|
||||
name: string;
|
||||
email: string;
|
||||
phone?: string | null;
|
||||
message?: string | null;
|
||||
status: 'pending' | 'accepted' | 'waitlist' | 'rejected' | 'cancelled';
|
||||
registeredAt?: string | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Leitet eine alte URL (z. B. nach einer Slug-Änderung bei Angeboten, Terminen oder Aktuelles) dauerhaft auf eine neue weiter.
|
||||
*
|
||||
@@ -770,6 +857,18 @@ export interface PayloadLockedDocument {
|
||||
relationTo: 'booking-requests';
|
||||
value: number | BookingRequest;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'conversations';
|
||||
value: number | Conversation;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'conversation-messages';
|
||||
value: number | ConversationMessage;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'group-registrations';
|
||||
value: number | GroupRegistration;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'redirects';
|
||||
value: number | Redirect;
|
||||
@@ -1017,6 +1116,20 @@ export interface OffersSelect<T extends boolean = true> {
|
||||
order?: T;
|
||||
visibility?: T;
|
||||
bookable?: T;
|
||||
bookingMode?: T;
|
||||
groupRegistrationMode?: T;
|
||||
groupSchedule?:
|
||||
| T
|
||||
| {
|
||||
recurrence?: T;
|
||||
weekday?: T;
|
||||
monthDay?: T;
|
||||
startTime?: T;
|
||||
endTime?: T;
|
||||
};
|
||||
groupCapacity?: T;
|
||||
registrationDeadline?: T;
|
||||
groupInfo?: T;
|
||||
price?: T;
|
||||
durationMinutes?: T;
|
||||
seo?:
|
||||
@@ -1096,6 +1209,51 @@ export interface BookingRequestsSelect<T extends boolean = true> {
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "conversations_select".
|
||||
*/
|
||||
export interface ConversationsSelect<T extends boolean = true> {
|
||||
subject?: T;
|
||||
name?: T;
|
||||
email?: T;
|
||||
type?: T;
|
||||
status?: T;
|
||||
customer?: T;
|
||||
threadKey?: T;
|
||||
lastMessageAt?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "conversation-messages_select".
|
||||
*/
|
||||
export interface ConversationMessagesSelect<T extends boolean = true> {
|
||||
conversation?: T;
|
||||
senderType?: T;
|
||||
senderName?: T;
|
||||
senderEmail?: T;
|
||||
body?: T;
|
||||
externalMessageId?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "group-registrations_select".
|
||||
*/
|
||||
export interface GroupRegistrationsSelect<T extends boolean = true> {
|
||||
offer?: T;
|
||||
name?: T;
|
||||
email?: T;
|
||||
phone?: T;
|
||||
message?: T;
|
||||
status?: T;
|
||||
registeredAt?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "redirects_select".
|
||||
|
||||
Reference in New Issue
Block a user