namespace GerbilManagerWebAPI.Contracts;

/// <summary>Käufer/Abnehmer-Block des Abgabevertrags.</summary>
/// <param name="Name">Vor- und Nachname inkl. Anrede, z. B. „Herr Max Muster“.</param>
/// <param name="Address">Anschrift einzeilig: „Straße Nr, PLZ Ort“.</param>
public sealed record ContractBuyer(
    string Name,
    string Address,
    string? Phone = null,
    string? Email = null);

/// <summary>Ein abgegebenes Tier (eine Tabelle im Vertrag pro Tier).</summary>
/// <param name="Geschlecht">Deutscher Anzeigetext („Weiblich“/„Männlich“) — die
/// Abbildung vom <c>Gender</c>-Enum passiert im Aufrufer (Phase B), der
/// Generator bleibt frei von Modell-Abhängigkeiten.</param>
public sealed record ContractAnimal(
    string Name,
    string Geschlecht,
    DateOnly? Geburtsdatum = null,
    string? Farbschlag = null);

/// <summary>
/// Alle Eingaben des Vertragsgenerators. Reines Daten-Objekt, keine EF-Typen.
/// </summary>
/// <param name="Price">Kaufpreis in Euro; gerendert als de-DE, z. B. „72,00 €“.</param>
/// <param name="HandoverDate">Übergabedatum (Abschnitt 3), Format TT.MM.JJJJ.</param>
/// <param name="ContractDate">Datum der Unterschriftszeile; Standard = Übergabedatum.</param>
public sealed record ContractData(
    BreederProfile Seller,
    ContractBuyer Buyer,
    IReadOnlyList<ContractAnimal> Animals,
    decimal Price,
    DateOnly HandoverDate,
    DateOnly? ContractDate = null);
