33 lines
1.4 KiB
C#
33 lines
1.4 KiB
C#
namespace TeleWave.Domain.Broadcast;
|
|
|
|
/// <summary>
|
|
/// Окно предпочтительных часов для шоу на канале: полуинтервал часов суток [StartHour, EndHour)
|
|
/// в UTC. В эти часы вес шоу в ротации умножается на <see cref="ChannelShow.PreferredWeightMultiplier"/>.
|
|
/// Ночные окна задаются двумя записями (напр. 22–24 и 0–2), заворот через полночь не поддерживается.
|
|
/// </summary>
|
|
public class ChannelShowHour
|
|
{
|
|
public Guid Id { get; private set; }
|
|
public Guid ChannelShowId { get; private set; }
|
|
|
|
/// <summary>Начало окна — час суток (0..23).</summary>
|
|
public int StartHour { get; private set; }
|
|
|
|
/// <summary>Конец окна (исключительно) — час суток (1..24).</summary>
|
|
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,
|
|
};
|
|
|
|
/// <summary>Попадает ли час суток (0..23) в это окно.</summary>
|
|
public bool Contains(int hour) => hour >= StartHour && hour < EndHour;
|
|
}
|