using System.ComponentModel.DataAnnotations; namespace GerbilManagerWebAPI.Models { /// /// A gerbil (Rennmaus). Pedigree is traversed via Litter → Father/Mother (no redundant /// parent FKs here). Genotype is one compact frozen-contract string (e.g. /// "Aa CC Dd EE GG Pp Spsp rere", "?" wildcards allowed); never SQL-filtered. /// public class Gerbil { [Key] public Guid Id { get; set; } public required string Name { get; set; } public Gender Gender { get; set; } public GerbilStatus Status { get; set; } = GerbilStatus.Active; // Birth litter (the litter this gerbil was born in). public Guid? LitterId { get; set; } public Litter? Litter { get; set; } // Contacts: Herkunft (origin) and Abnehmer (receiver, when given away). public Guid? OriginContactId { get; set; } public Contact? OriginContact { get; set; } public Guid? ReceiverContactId { get; set; } public Contact? ReceiverContact { get; set; } // Current home. public Guid? EnclosureId { get; set; } public Enclosure? Enclosure { get; set; } // Farbschlag. public Guid? ColorVarietyId { get; set; } public ColorVariety? ColorVariety { get; set; } public DateOnly? DateOfBirth { get; set; } public DateOnly? DateOfDeath { get; set; } public string? CauseOfDeath { get; set; } public DateOnly? GoHomeDate { get; set; } /// Compact genotype string (frozen GEN-1 contract). Null = not genotyped. public string? Genotype { get; set; } public string? Notes { get; set; } // Provenance (for the FEAT-8 spreadsheet import). public string? ImportSource { get; set; } public string? ExternalRef { get; set; } } }