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; }
}