using TeleWave.Domain.Broadcast;

namespace TeleWave.Application.Broadcast;

public sealed record ChannelSummaryDto(Guid Id, string Name, string Slug, bool IsEnabled);

/// <summary>Общие для канала настройки ТВ-заставок (стиль/звук/текст — на блоках/подблоках).</summary>
public sealed record BumperSettingsDto(BumperFont Font, BumperSelection Selection);

/// <summary>Подблок (текст-вариант): свой текст + правило показа + вес поверх стиля/звука блока.</summary>
public sealed record BumperTextVariantDto(
    Guid Id,
    int Position,
    string Name,
    BumperTextKind Kind,
    string NowLabel,
    string NextLabel,
    string Line1,
    string Line2,
    BumperTrigger Trigger,
    int Weight
);

/// <summary>Блок заставки: своё оформление + звук + подблоки. <see cref="AudioDurationSeconds"/> — длина звука (сек).</summary>
public sealed record BumperTemplateDto(
    Guid Id,
    int Position,
    bool IsDefault,
    string Name,
    string BackgroundColor,
    string BackgroundColor2,
    string AccentColor,
    string TextColor,
    Guid? BackgroundImageId,
    bool HasAudio,
    double? AudioDurationSeconds,
    IReadOnlyList<BumperTextVariantDto> Variants
);

public sealed record ChannelDto(
    Guid Id,
    string Name,
    string Slug,
    bool IsEnabled,
    int? Number,
    int UtcOffsetMinutes,
    TimeOnly DayStartTime,
    Guid? TemplateId,
    bool BumpersEnabled,
    BumperSettingsDto Bumper,
    IReadOnlyList<BumperTemplateDto> BumperTemplates,
    Guid? FillerAssetId,
    /// <summary>Оверлеи и фильтр зрительской части — всё опционально (см. 6.8).</summary>
    ViewerSettingsDto Viewer
);

/// <summary>Как канал выглядит у зрителя: логотип-оверлей, часы, аналоговый фильтр.</summary>
public sealed record ViewerSettingsDto(
    Guid? LogoImageId,
    LogoCorner LogoCorner,
    double LogoOpacity,
    bool ShowClock,
    double AnalogFilterStrength
);
