Files
ClaudeandClaude Sonnet 5.5 f6fc291dfe Kundenansicht neu E-Fix M9: featureView nennt den Löschtag auch für News, Webshop und Buchungskalender im Abo-Modell
featureView lieferte loeschungAm nur für den Terminplaner und Öffnungszeiten live. Im Abo-Modell werden aber auch News (30 Tage), Webshop und
Buchungskalender (90 Tage) nach dem Ende des Abos tatsächlich gelöscht (K39, Löschjobs); "Meine" und WOMS zeigten kein Datum, der Kommentar
"bei News verspräche das Datum eine Löschung, die nie kommt" stimmte nicht mehr. Jetzt: abo_ende bei einem Dokument des Abo-Modells (istAboModell)
von news, shop und unterkunft ergibt loeschTagNach(disabledAt, loeschFristTage(key)), derselbe Berliner Tag wie in K39. Team-Sperre, Bestand ohne
Abo-Modell und der Terminplaner bleiben unverändert. Test in knLoeschfristAnzeige.test.js. (Der Text in WOMS gehört zum WOMS-Teil W2.)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 21:49:18 +00:00

41 lines
1.8 KiB
JavaScript

/**
* Loeschfrist abgeschalteter Terminplaner: 30 Tage nach `disabledAt` loescht der Tageslauf (jobs.js) die Buchungen und die
* Einstellung. Diese Datei haelt die Frist an einer Stelle, damit Anzeige (siteFeatures.featureView), Mails und Rechtstexte
* dieselbe Zahl und dieselbe Rechnung benutzen. Reine Funktionen, nur Importe aus zeit.js und util.js (kein Kreis mit siteFeatures.js).
*/
import { ausUtc } from './zeit.js'
import { zeitMs } from './util.js'
/** Tage zwischen dem Abschalten (disabledAt) und der Loeschung. */
export const LOESCHFRIST_TAGE = 30
const TAG_MS = 24 * 60 * 60 * 1000
/**
* Zeitpunkt, ab dem die Daten geloescht werden duerfen: disabledAt plus 30 x 24 Stunden (keine Wanduhr-Rechnung, wie der Tageslauf).
* disabledAt: ISO-String (auch mit +00:00 wie von Appwrite), Date oder Zahl; fehlend oder ungueltig => null.
*/
export function loeschzeit(disabledAt) {
const ms = zeitMs(disabledAt)
if (!Number.isFinite(ms)) return null
const ende = new Date(ms + LOESCHFRIST_TAGE * TAG_MS)
return Number.isNaN(ende.getTime()) ? null : ende
}
/** Berliner Kalendertag der Loeschung ('JJJJ-MM-TT') oder null, wenn disabledAt fehlt oder ungueltig ist. */
export function loeschTag(disabledAt) {
const ende = loeschzeit(disabledAt)
return ende ? ausUtc(ende).tag : null
}
/**
* Wie loeschTag, mit der Frist einer anderen Funktion (E-Fix M9: News 30, Webshop und Buchungskalender 90 Tage, aboFunktionenMails.loeschFristTage):
* disabledAt plus tage x 24 Stunden, Berliner Kalendertag. Fehlendes oder ungueltiges disabledAt oder eine ungueltige Frist: null.
*/
export function loeschTagNach(disabledAt, tage) {
const ms = zeitMs(disabledAt)
if (!Number.isFinite(ms) || !Number.isInteger(tage) || tage < 0) return null
const ende = new Date(ms + tage * TAG_MS)
return Number.isNaN(ende.getTime()) ? null : ausUtc(ende).tag
}