using System.ComponentModel.DataAnnotations;
namespace GerbilManagerWebAPI.Models
{
/// A litter (Wurf). Parents are gerbils; juveniles are Gerbils linked via Gerbil.LitterId.
public class Litter
{
[Key]
public Guid Id { get; set; }
public required string Name { get; set; }
public DateOnly? Date { get; set; }
/// Total born count (was "Strength").
public int? TotalBorn { get; set; }
/// Frühsterblichkeit: Anzahl der in den ersten 8 Wochen verstorbenen Tiere.
/// Null = unbekannt (Altdaten). Must be ≤ TotalBorn if both are set.
public int? DeathsWithin8Weeks { get; set; }
public Guid? FatherId { get; set; }
public Gerbil? Father { get; set; }
public Guid? MotherId { get; set; }
public Gerbil? Mother { get; set; }
/// Computed ~35 days after Date by default; editable.
public DateOnly? ExpectedGoHomeDate { get; set; }
public string? Notes { get; set; }
/// Zuchtnummer der Verpaarung (Wurfchronik col H) — pairing-level code;
/// litters sharing it are the same Zuchtpaar. Set by the FEAT-8 import.
public string? PairingCode { get; set; }
/// DB-5: stable import source id (extract.py litter Id). Unique (filtered,
/// nulls allowed for manually-entered litters). Primary idempotency key for re-imports;
/// Name+Date is the fallback for litters created before this column existed.
public string? ExternalRef { get; set; }
/// FEAT-NAMEGEN: Wurfbuchstabe (A, B, C … AA, AB …) — alle Welpen dieses
/// Wurfs erhalten Namen mit diesem Anfangsbuchstaben (gängige Zuchtkonvention).
public string? LitterLetter { get; set; }
}
}