using FluentValidation;
using LiteCqrs;
using TeleWave.Application.Common.Models;

namespace TeleWave.Application.Programming.Templates.Generate;

/// <summary>
/// Собрать сетку по профилю. План не передаётся с клиента: команда пересчитывает его сама на свежих
/// данных — за время, пока админ смотрел предпросмотр, состав групп мог измениться.
/// </summary>
public sealed record GenerateGridCommand(
    Guid ChannelId,
    GridProfileKind Profile,
    GridGenerationMode Mode
) : ICommand<Result<GenerateGridResultDto>>;

public sealed class GenerateGridCommandValidator : AbstractValidator<GenerateGridCommand>
{
    public GenerateGridCommandValidator()
    {
        RuleFor(x => x.Profile).IsInEnum();
        RuleFor(x => x.Mode).IsInEnum();
    }
}
