using System.ComponentModel.DataAnnotations;
namespace GerbilManagerWebAPI.Models
{
/// A tank/cage (Becken) that gerbils currently live in.
public class Enclosure
{
[Key]
public Guid Id { get; set; }
public required string Name { get; set; }
public string? Notes { get; set; }
// Reinigungszyklus (aus RennmausPro becken_tb: _SIZE/_MENGE/_CLEANED/_CYCLUS).
/// Maße als Freitext (z. B. "120×50 cm").
public string? Size { get; set; }
/// Empfohlene/maximale Tieranzahl.
public int? Capacity { get; set; }
/// Datum der letzten Reinigung.
public DateOnly? LastCleanedDate { get; set; }
/// Reinigungsintervall in Tagen.
public int? CleaningCycleDays { get; set; }
/// Nächste fällige Reinigung = LastCleanedDate + CleaningCycleDays (berechnet, nicht persistiert).
public DateOnly? NextCleaningDate =>
LastCleanedDate is { } last && CleaningCycleDays is { } cycle and > 0
? last.AddDays(cycle)
: null;
public ICollection Gerbils { get; } = new List();
}
}