using LiteCqrs;
using TeleWave.Application.Common.Models;
using TeleWave.Domain.Programming.Planning;

namespace TeleWave.Application.Programming.Planning.ApplyTemplate;

/// <summary>
/// Применяет правила к эфиру: пересобирает будущий хвост от текущего момента. Правка слотов сама
/// по себе эфир не двигает — иначе десять правок подряд дали бы десять пересборок, и при живых
/// зрителях это было бы заметно.
/// </summary>
public sealed record ApplyChannelTemplateCommand(Guid ChannelId) : ICommand<Result<ApplyResultDto>>;

/// <summary>Итог применения: сколько записей получилось и что стоит показать админу.</summary>
public sealed record ApplyResultDto(int Added, IReadOnlyList<PlanningWarningDto> Warnings);

public sealed record PlanningWarningDto(PlanningWarningKind Kind, Guid? SlotId, string Details);
