Files
TeleWave/backend/src/TeleWave.Domain/Broadcast/ChannelShowHour.cs
T

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