40 lines
2.0 KiB
JavaScript
40 lines
2.0 KiB
JavaScript
import { fmtDate } from './format'
|
||
|
||
// E-Mail-Speicher (Zusatzspeicher-Aufgaben in konsoleH): Texte wortgleich aus dem Admin-Panel (public/admin.js 908-982).
|
||
|
||
const GB_INCLUDED = 5
|
||
const GB_PER_UNIT = 5
|
||
const gbOfUnits = (units) => GB_INCLUDED + GB_PER_UNIT * (Number(units) || 0)
|
||
|
||
export function storageLabel(units) {
|
||
const n = Number(units) || 0
|
||
const packages = n === 0 ? 'kein Paket' : n === 1 ? '1 Paket' : `${n} Pakete`
|
||
return `${packages} (${gbOfUnits(n)} GB)`
|
||
}
|
||
|
||
export function summaryText({ allocatedGb, packageGb, warnGb, packageName }) {
|
||
const warn = Number(allocatedGb) >= Number(warnGb)
|
||
const head = `${allocatedGb} von ${packageGb} GB vergeben (Paket ${packageName})`
|
||
return { warn, text: warn ? `${head} – Warnschwelle ${warnGb} GB erreicht: größeres Hetzner-Paket buchen.` : `${head} · Warnung ab ${warnGb} GB` }
|
||
}
|
||
|
||
export const taskText = (t) => (t.kind === 'einrichten'
|
||
? `Postfachgrenze in konsoleH jetzt auf ${t.targetGb} GB setzen`
|
||
: `Postfachgrenze in konsoleH am ${fmtDate(t.dueAt)} auf ${t.targetGb} GB senken`)
|
||
|
||
export const scopeText = (t) =>
|
||
`Gesamtspeicher des Kunden: ${t.targetGb} GB, auf seine Postfächer verteilt nach seiner Vorgabe – § 3 Abs. 4${t.contactDomain ? ` · Kontakt: ${t.contactDomain}` : ''}`
|
||
|
||
export const changeText = (t) => `${storageLabel(t.fromUnits)} → ${storageLabel(t.toUnits)}${t.viaCancellation ? ' · über die Kündigungsseite' : ''}`
|
||
|
||
export const partialText = (t) => (t.partial
|
||
? `Teilweise: Stripe steht noch auf der bezahlten Menge, nicht auf ${t.toUnits} Paket(en) – Stückzahl in Stripe von Hand nachziehen.${t.error ? ` Fehler: ${t.error}` : ''}`
|
||
: '')
|
||
|
||
export const orderedKind = (t) => (t.toUnits > t.fromUnits ? 'Bestellung (Plus)' : 'Verringerung (Minus)')
|
||
|
||
export const isOverdue = (t, now = Date.now()) => Boolean(t.dueAt && new Date(t.dueAt).getTime() <= now)
|
||
|
||
export const failedText = (f) =>
|
||
`${storageLabel(f.fromUnits)} → ${storageLabel(f.toUnits)} – Stripe hat die Änderung abgelehnt, nichts berechnet, keine Aufgabe.${f.error ? ` Fehler: ${f.error}` : ''}`
|