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,
        BumperTemplate template,
        int alignedDurationSeconds,
        BumperSpecInputs inputs
    ) =>
        new(
            alignedDurationSeconds,
            bumper.Width,
            bumper.Height,
            template.BackgroundColor,
            template.BackgroundColor2,
            template.AccentColor,
            template.TextColor,
            template.Font == BumperFont.Serif ? bumper.FontFileSerif : bumper.FontFileSans,
            inputs.Lines,
            inputs.BackgroundAbsolutePath,
            inputs.AudioPath,
            inputs.PosterAbsolutePath,
            inputs.ClipAbsolutePath,
            // Джингл назначен — он и звучит, подрезанный под ролик; не назначен — играет
            // оригинальная дорожка ролика.
            UseClipAudio: inputs.ClipAbsolutePath is not null && inputs.AudioPath is null
        );
}
