namespace TeleWave.Domain.Broadcast; /// /// Окно предпочтительных часов для шоу на канале: полуинтервал часов суток [StartHour, EndHour) /// в UTC. В эти часы вес шоу в ротации умножается на . /// Ночные окна задаются двумя записями (напр. 22–24 и 0–2), заворот через полночь не поддерживается. /// public class ChannelShowHour { public Guid Id { get; private set; } public Guid ChannelShowId { get; private set; } /// Начало окна — час суток (0..23). public int StartHour { get; private set; } /// Конец окна (исключительно) — час суток (1..24). public int EndHour { get; private set; } private ChannelShowHour() { } internal static ChannelShowHour Create(Guid channelShowId, int startHour, int endHour) => new() { Id = Guid.NewGuid(), ChannelShowId = channelShowId, StartHour = startHour, EndHour = endHour, }; /// Попадает ли час суток (0..23) в это окно. public bool Contains(int hour) => hour >= StartHour && hour < EndHour; }