Terminplaner: Handeintraege verlangen nur den Namen, Bestaetigung braucht eine Adresse

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-03 08:17:43 +00:00
1 parent be49d38e0c
commit 589f5088a6
3 files changed
+65 -14

No files matched your search

+12 -5
View File
@@ -88,6 +88,7 @@ export const MELDUNG = {
nameLeer: 'Bitte einen Namen angeben.',
nameLang: `Der Name darf höchstens ${NAME_MAX} Zeichen lang sein.`,
email: 'Bitte eine gültige E-Mail-Adresse angeben (genau ein Postfach).',
bestaetigungAdresse: 'Für die Bestätigung braucht der Gast eine E-Mail-Adresse.',
telefonLeer: 'Bitte eine Telefonnummer angeben.',
telefon: 'Bitte eine gültige Telefonnummer angeben (Ziffern, Leerzeichen, + - und Klammern).',
nachrichtLeer: 'Bitte eine Nachricht angeben.',
@@ -155,10 +156,13 @@ export async function mailSicher(was, bookingId, fn) {
/**
* Prueft die Eingabe des Formulars gegen die Einstellung. => geprueft und bereinigt; sonst 400 mit allen Feldfehlern.
* Abgeschaltete Gastfelder (aus) werden ignoriert, Zusatzfelder muessen konfiguriert sein.
* manuell (Termin von Hand, ablaufBetrieb.js): die E-Mail-Adresse ist freiwillig (leer => ''; ist sie angegeben, muss sie
* stimmen), Erinnerung und Zustimmungen entfallen (der Betrieb traegt ein, der Gast klickt nichts an).
* manuell (Termin von Hand, ablaufBetrieb.js; meist Telefon oder Laufkundschaft): Pflicht ist nur der Name. E-Mail, Telefon,
* Nachricht und Zusatzfelder sind freiwillig, unabhaengig von gastFelder (auch bei "aus" oder "pflicht"); was angegeben ist,
* wird wie beim Gast auf Form und Laenge geprueft (Zusatzfelder muessen konfiguriert sein). Mit bestaetigung (der Gast soll
* eine Bestaetigung bekommen) ist die E-Mail-Adresse Pflicht. Erinnerung und Zustimmungen entfallen (der Betrieb traegt
* ein, der Gast klickt nichts an).
*/
export function pruefeEingabe(e, roh, now, { manuell = false } = {}) {
export function pruefeEingabe(e, roh, now, { manuell = false, bestaetigung = false } = {}) {
if (!istObjekt(roh)) throw fehlerMit(400, { _: MELDUNG.formular })
const { fehler, fehl } = fehlerSammler()
@@ -189,9 +193,12 @@ export function pruefeEingabe(e, roh, now, { manuell = false } = {}) {
const ohneAdresse = manuell && (roh.email === undefined || roh.email === null || (typeof roh.email === 'string' && roh.email.trim() === ''))
const email = ohneAdresse ? '' : emailAdresse(roh.email)
if (email === null) fehl('email', MELDUNG.email)
else if (ohneAdresse && bestaetigung) fehl('email', MELDUNG.bestaetigungAdresse)
// Telefon, Nachricht, Zusatzfelder nach gastFelder
const felder = e.gastFelder || {}
// Telefon, Nachricht, Zusatzfelder nach gastFelder (bei Handeintraegen alles freiwillig, siehe oben)
const felder = manuell
? { telefon: 'optional', nachricht: 'optional', zusatz: (e.gastFelder?.zusatz || []).map((f) => ({ ...f, pflicht: false })) }
: e.gastFelder || {}
let telefon = ''
if (felder.telefon !== 'aus') {
telefon = bereinigterText(roh.telefon, TELEFON_MAX + 1)