CluPilotCloud/app/Services/Mail/MailCatalogue.php

62 lines
3.4 KiB
PHP

<?php
namespace App\Services\Mail;
/**
* Die eine Liste aller Mailarten, die dieses Haus verschickt.
*
* Es gab sie schon — als Array in MailPreviews, nur für die Vorschau. Mit der
* Wegwahl je Mailart bräuchte es eine zweite, und die zweite Liste ist die, die
* beim siebzehnten Mail vergessen wird. Also eine, aus der beide lesen.
*
* `purpose` ist die VORGABE: das Postfach, aus dem diese Mailart geht, solange
* niemand etwas anderes einstellt. Sie muss dem entsprechen, was die Mailklasse
* heute an mailboxEnvelope() übergibt — sonst ändert dieser Umbau still das
* Verhalten.
*
* Reihenfolge wie in der Vorschau: Anmeldung, Kauf, Betrieb, Geld, Sicherheit.
*/
final class MailCatalogue
{
/** @return array<string, array{label: string, purpose: string}> */
public static function all(): array
{
return [
'verify-email' => ['label' => 'E-Mail bestätigen (Registrierung)', 'purpose' => MailPurpose::SYSTEM],
'reset-password' => ['label' => 'Passwort zurücksetzen', 'purpose' => MailPurpose::SYSTEM],
'order-confirmation' => ['label' => 'Bestellbestätigung', 'purpose' => MailPurpose::BILLING],
'cloud-ready' => ['label' => 'Cloud ist bereit (Zugangsdaten)', 'purpose' => MailPurpose::PROVISIONING],
'maintenance-announcement' => ['label' => 'Wartungsfenster angekündigt', 'purpose' => MailPurpose::MAINTENANCE],
'maintenance-cancelled' => ['label' => 'Wartungsfenster abgesagt', 'purpose' => MailPurpose::MAINTENANCE],
'invoice' => ['label' => 'Rechnung', 'purpose' => MailPurpose::BILLING],
'new-device' => ['label' => 'Anmeldung von einem neuen Gerät', 'purpose' => MailPurpose::SYSTEM],
'dormant-warning' => ['label' => 'Konto ohne Paket wird gelöscht', 'purpose' => MailPurpose::SYSTEM],
'operator-message' => ['label' => 'Nachricht aus der Konsole', 'purpose' => MailPurpose::SUPPORT],
// Die sechs Texte des Mahnlaufs. Vorschaubar, weil sie die
// unangenehmsten sind, die dieses Haus verschickt — und die
// einzigen, die ein Kunde bekommt, wenn ohnehin gerade etwas
// schiefläuft. Alle sechs aus dem BILLING-Postfach: eine Mahnung
// ist immer eine Frage übers Geld.
'dunning-0' => ['label' => 'Zahlung fehlgeschlagen (Hinweis)', 'purpose' => MailPurpose::BILLING],
'dunning-1' => ['label' => 'Zahlungserinnerung (1. Mahnung)', 'purpose' => MailPurpose::BILLING],
'dunning-2' => ['label' => '2. Mahnung (mit Mahnspesen)', 'purpose' => MailPurpose::BILLING],
'dunning-3' => ['label' => '3. Mahnung (letzte vor Abschaltung)', 'purpose' => MailPurpose::BILLING],
'cloud-suspended' => ['label' => 'Cloud abgeschaltet', 'purpose' => MailPurpose::BILLING],
'cloud-resumed' => ['label' => 'Cloud läuft wieder', 'purpose' => MailPurpose::BILLING],
// Sicherheit: die eine Meldung des Frühwarnsystems (BlockAddress),
// wenn eine Adresse an der Instanz eines Kunden gesperrt wird.
'security-block' => ['label' => 'Adresse wegen Anmeldeversuchen gesperrt', 'purpose' => MailPurpose::SYSTEM],
];
}
public static function label(string $key): string
{
return self::all()[$key]['label'] ?? $key;
}
public static function purpose(string $key): string
{
return self::all()[$key]['purpose'] ?? MailPurpose::SYSTEM;
}
}