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;
}