using TeleWave.Application.Common.Interfaces;
using TeleWave.Domain.Broadcast;

namespace TeleWave.Application.Broadcast.Bumpers;

/// <summary>
/// Чистая сборка <see cref="BumperRenderSpec"/> из уже разрешённых входов (пути к постеру/фону/звуку,
/// названия шоу). Общая точка для фонового рендерера заставок расписания и превью в админке.
/// </summary>
public static class BumperSpecFactory
{
    public static BumperRenderSpec Build(
        BumperOptions bumper,
        BumperFont font,
        BumperTemplate template,
        BumperTextVariant variant,
        int alignedDurationSeconds,
        BumperSpecInputs inputs
    )
    {
        var free = variant.Kind == BumperTextKind.Free;
        return new BumperRenderSpec(
            alignedDurationSeconds,
            bumper.Width,
            bumper.Height,
            template.BackgroundColor,
            template.BackgroundColor2,
            template.AccentColor,
            template.TextColor,
            font == BumperFont.Serif ? bumper.FontFileSerif : bumper.FontFileSans,
            free ? "" : variant.NowLabel,
            free ? "" : inputs.FromName,
            free ? "" : variant.NextLabel,
            free ? "" : inputs.ToName,
            inputs.BackgroundAbsolutePath,
            inputs.AudioPath,
            inputs.PosterAbsolutePath,
            free,
            variant.Line1,
            variant.Line2
        );
    }
}
