import type { CollectionAfterChangeHook } from 'payload' import { sendTenantEmail } from '../lib/email/tenant-email-service' interface SubmissionData { field: string value: string } interface FormEmail { emailTo?: string | null cc?: string | null bcc?: string | null replyTo?: string | null emailFrom?: string | null subject?: string | null message?: string | null } interface FormDocument { id: number | string title: string emails?: FormEmail[] tenant?: { id: number | string } | number | string } /** * Hook: Sendet E-Mail-Benachrichtigungen bei neuen Formular-Einsendungen. * Verwendet den Tenant-spezifischen E-Mail-Service. */ export const sendFormNotification: CollectionAfterChangeHook = async ({ doc, req, operation, }) => { // Nur bei neuen Einsendungen if (operation !== 'create') return doc const { payload } = req try { // Form laden mit Details const form = (await payload.findByID({ collection: 'forms', id: doc.form, depth: 1, })) as FormDocument | null if (!form) { console.warn('[Forms] Form not found for submission:', doc.form) return doc } // Prüfen ob E-Mail-Benachrichtigungen konfiguriert sind if (!form.emails || form.emails.length === 0) { return doc } // Tenant ermitteln const tenantId = typeof form.tenant === 'object' ? form.tenant?.id : form.tenant if (!tenantId) { console.warn('[Forms] No tenant found for form submission, skipping email') return doc } // Daten formatieren const submissionData = doc.submissionData as SubmissionData[] | undefined const dataHtml = submissionData ? submissionData .map( (item) => `
${emailConfig.message}
` : ''}| Feld | Wert |
|---|
Gesendet am ${new Date().toLocaleString('de-DE')}