using System.ComponentModel.DataAnnotations;
namespace GerbilManagerWebAPI.Models
{
///
/// Ein erzeugter Abgabevertrag (FEAT-13). Die .docx liegt wie die Fotos im
/// Datei-Root (Contracts:RootPath bzw. contract-storage/), in der DB steht
/// nur der Dateiname. Tiere hängen über
/// (Join-Entity statt uuid[]-Spalte: referenzielle Integrität, „Verträge
/// eines Tieres“ bleibt abfragbar, und pro Tier-Zeile ist später Platz für
/// Zusatzdaten wie den Einzelpreis).
///
public class SaleContract
{
[Key]
public Guid Id { get; set; }
/// Abnehmer (Käufer-Block des Vertrags).
public Guid ContactId { get; set; }
public Contact? Contact { get; set; }
/// Kaufpreis in Euro (gesamt).
public decimal Price { get; set; }
public DateOnly HandoverDate { get; set; }
/// Datum der Unterschriftszeile (Standard: Übergabedatum).
public DateOnly ContractDate { get; set; }
/// Dateiname der erzeugten .docx im Vertrags-Dateiroot.
public required string FileName { get; set; }
public DateTimeOffset CreatedAt { get; set; }
public List Animals { get; set; } = [];
}
/// Join-Zeile Vertrag ↔ Tier (zusammengesetzter Schlüssel).
public class SaleContractAnimal
{
public Guid SaleContractId { get; set; }
public Guid GerbilId { get; set; }
public Gerbil? Gerbil { get; set; }
/// Optional gewähltes Tierfoto () fürs Vertragsbild.
/// Nur die Id wird gespeichert; beim PDF-Rendern wird die Datei nachgeladen.
public Guid? PhotoId { get; set; }
}
}