namespace SVSim.Database.Models.Config; /// /// Window-based schedule for the Custom Rotation (a.k.a. MyRotation) feature. Two parallel windows: /// Gathering (deck-building period) and FreeBattle (active play period). The client /// gates the format-selector button on these windows — see Wizard/MyRotationAllInfo.cs:45 /// (IsMyRotationEnable => IsWithinPeriod(FreeMatchPeriod)) and Wizard/DeckListUI.cs:92. /// Mapped to the wire-shape SpecialRotationSchedule at the controller seam. /// /// Shipped defaults reproduce the 2026-05-23 prod capture so a fresh install ships with the /// feature enabled. GlobalsImporter overwrites the DB section from any newer capture. /// /// [ConfigSection("MyRotationSchedule")] public class MyRotationScheduleConfig { public ScheduleWindow Gathering { get; set; } = new() { Begin = new DateTime(2024, 5, 1, 20, 0, 0, DateTimeKind.Utc), End = new DateTime(2030, 6, 26, 19, 59, 59, DateTimeKind.Utc), }; public ScheduleWindow FreeBattle { get; set; } = new() { Begin = new DateTime(2024, 5, 1, 20, 0, 0, DateTimeKind.Utc), End = new DateTime(2030, 6, 26, 19, 59, 59, DateTimeKind.Utc), }; public static MyRotationScheduleConfig ShippedDefaults() => new(); } public class ScheduleWindow { public DateTime Begin { get; set; } public DateTime End { get; set; } }