namespace EnvelopeGenerator.API.Models; /// /// Einheitliche Antwort des ReceiverAuthControllers. /// /// WARUM ein einziges Response-Objekt für alle Endpunkte? /// - Der Client braucht nur ein Format zu verstehen /// - Der Status-String bestimmt, welche Felder relevant sind /// - Entspricht dem, was der Web-Controller bisher über ViewData verteilt hat /// /// Status-Werte und was sie bedeuten: /// - "requires_access_code" → AccessCode-Eingabe zeigen /// - "requires_tfa" → TFA-Code-Eingabe zeigen (nach AccessCode) /// - "show_document" → Dokument laden und anzeigen /// - "already_signed" → Info-Seite "Bereits unterschrieben" /// - "rejected" → Info-Seite "Abgelehnt" /// - "not_found" → Fehler-Seite "Nicht gefunden" /// - "expired" → Fehler-Seite "Link abgelaufen" /// public class ReceiverAuthResponse { /// Aktueller Status des Empfänger-Flows public required string Status { get; init; } /// Titel des Umschlags (z.B. "Vertragsdokument") public string? Title { get; init; } /// Nachricht des Absenders public string? Message { get; init; } /// E-Mail des Absenders (für Rückfragen-Hinweis) public string? SenderEmail { get; init; } /// Name des Empfängers public string? ReceiverName { get; init; } /// Ob TFA für diesen Umschlag aktiviert ist public bool TfaEnabled { get; init; } /// Ob der Empfänger eine Telefonnummer hat (für SMS-TFA) public bool HasPhoneNumber { get; init; } /// Ob das Dokument nur gelesen werden soll (ReadAndConfirm) public bool ReadOnly { get; init; } /// TFA-Typ: "sms" oder "authenticator" (wenn Status = "requires_tfa") public string? TfaType { get; init; } /// Ablaufzeit des SMS-Codes (für Countdown-Timer) public DateTime? TfaExpiration { get; init; } /// Fehlermeldung (z.B. "Falscher Zugangscode") public string? ErrorMessage { get; init; } } /// /// Request-Body für POST /api/receiverauth/{key}/access-code /// public class AccessCodeRequest { /// Der vom Empfänger eingegebene Zugangscode public required string AccessCode { get; init; } /// Ob SMS statt Authenticator bevorzugt wird public bool PreferSms { get; init; } } /// /// Request-Body für POST /api/receiverauth/{key}/tfa /// public class TfaCodeRequest { /// Der eingegebene TFA-Code (6-stellig) public required string Code { get; init; } /// "sms" oder "authenticator" public required string Type { get; init; } }