Terminplaner: Abschluss – Server (Widerruf auch bei Anfragen, Gastdaten löschen vollständig, formMinSekunden)
- R55: Widerrufsbelehrung, Anschrift-Pflicht und Knopf "Vertrag widerrufen" gelten für jede Verbraucher-Buchung mit sichtbarer Leistung, auch Anfragen (zeigtWiderruf); der Nachweis hält die Belehrung auch bei Anfragen fest. Damit bleibt die Annahme einer Anfrage nie mehr still ohne G02. - "Gastdaten löschen" leert auch absageGrund und löscht noch nicht versandte Mails der Buchung (neu: verwerfeWartende in der Warteschlange). - R53: GET /:siteKey/config nennt formMinSekunden. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4be886a4de
commit
bd65c9dc58
11 files changed
+216
-18
No files matched your search
@@ -316,6 +316,42 @@ export async function raeumeAuf(now) {
|
||||
return geloescht
|
||||
}
|
||||
|
||||
/**
|
||||
* Gastdaten loeschen (Portal "Gastdaten löschen"): noch nicht versandte Mails einer Buchung (Status wartet) werden
|
||||
* geloescht, denn sie halten Adresse und Inhalt. Je Eintrag unter der Sendesperre `termine-mail:<id>` nach neuem Lesen:
|
||||
* ein Eintrag, der inzwischen gesendet wurde (seine Felder sind dann schon leer), bleibt; ein inzwischen geloeschter
|
||||
* stoert nicht. Gesendete und fehlgeschlagene Eintraege behandelt raeumeAuf.
|
||||
* @param {string} bookingId
|
||||
* @returns {Promise<number>} Anzahl geloeschter Eintraege
|
||||
*/
|
||||
export async function verwerfeWartende(bookingId) {
|
||||
pruefeText(bookingId, 'bookingId')
|
||||
const wartend = await listAllDocuments(col(), [Query.equal('status', 'wartet'), Query.equal('bookingId', bookingId)])
|
||||
let geloescht = 0
|
||||
for (const eintrag of wartend) {
|
||||
const weg = await withLocks([`termine-mail:${eintrag.$id}`], async () => {
|
||||
let frisch
|
||||
try {
|
||||
frisch = await getDocument(col(), eintrag.$id)
|
||||
} catch (err) {
|
||||
if (err.status === 404) return false
|
||||
throw err
|
||||
}
|
||||
if (frisch.status !== 'wartet') return false
|
||||
try {
|
||||
await deleteDocument(col(), frisch.$id)
|
||||
} catch (err) {
|
||||
if (err.status === 404) return false
|
||||
throw err
|
||||
}
|
||||
unverbucht.delete(frisch.$id)
|
||||
return true
|
||||
})
|
||||
if (weg) geloescht += 1
|
||||
}
|
||||
return geloescht
|
||||
}
|
||||
|
||||
/**
|
||||
* Taeglicher Job, vor raeumeAuf: Eintraege, die laenger als 48 Stunden (ab createdAt) in `wartet` stehen, werden zu
|
||||
* `fehler` (das Portal zeigt dann den Zustellhinweis) und bekommen als Loeschtermin jetzt + 48 Stunden, damit raeumeAuf
|
||||
|
||||
Reference in new issue
Block a user