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

namespace TeleWave.Application.Broadcast.UpdateViewerSettings;

/// <summary>
/// Оверлеи и аналоговый фильтр канала (см. 6.8). Отдельной командой, а не в общих настройках:
/// это про то, как канал выглядит у зрителя, и правится другими руками и в другой момент.
/// </summary>
public sealed record UpdateViewerSettingsCommand(
    Guid ChannelId,
    Guid? LogoImageId,
    LogoCorner LogoCorner,
    double LogoOpacity,
    bool ShowClock,
    double AnalogFilterStrength
) : ICommand<Result>;

public sealed class UpdateViewerSettingsCommandValidator
    : AbstractValidator<UpdateViewerSettingsCommand>
{
    public UpdateViewerSettingsCommandValidator()
    {
        RuleFor(x => x.LogoOpacity).InclusiveBetween(0.0, 1.0);
        RuleFor(x => x.AnalogFilterStrength).InclusiveBetween(0.0, 1.0);
    }
}
