Files
TeleWave/backend/src/TeleWave.Application/Programming/Templates/TemplateErrors.cs
T
Leonid Pershin 926a20020f
ci / build-backend (push) Successful in 1m18s
ci / build-frontend (push) Successful in 43s
ci / tests (push) Successful in 3m38s
ci / sonar (push) Successful in 3m38s
Add InterstitialGroups service and enhance SlotWriter and related components for interstitial handling
Introduced the InterstitialGroups service to manage interstitial group logic, preventing their inclusion in slots and fallback groups. Updated the SlotWriter class to utilize this service, ensuring proper validation during slot creation and updates. Enhanced error handling for interstitial groups in the ImportGridCommandHandler and UpdateTemplateCommandHandler, providing warnings instead of failures when interstitials are detected. Updated related tests to verify the correct behavior of these changes, ensuring robust handling of interstitials in the scheduling process.
2026-07-30 12:48:51 +03:00

93 lines
3.9 KiB
C#

using TeleWave.Application.Common.Models;
namespace TeleWave.Application.Programming.Templates;
public static class TemplateErrors
{
public static readonly Error NotFound = Error.NotFound(
"Templates.NotFound",
"Шаблон сетки не найден."
);
public static readonly Error LayerNotFound = Error.NotFound(
"Templates.LayerNotFound",
"Слой сетки не найден."
);
public static readonly Error SlotNotFound = Error.NotFound(
"Templates.SlotNotFound",
"Слот не найден."
);
public static readonly Error BackgroundLayerCannotBeDeleted = Error.Validation(
"Templates.BackgroundLayerCannotBeDeleted",
"Фоновый слой удалить нельзя — без него в сетке появятся дыры."
);
public static readonly Error SlotsOverlap = Error.Conflict(
"Templates.SlotsOverlap",
"Слоты одного слоя пересекаются по времени."
);
public static readonly Error GroupRequired = Error.Validation(
"Templates.GroupRequired",
"Слоту с контентом нужна группа."
);
public static readonly Error GroupNotFound = Error.NotFound(
"Templates.GroupNotFound",
"Группа не найдена."
);
public static readonly Error InterstitialGroupInSlot = Error.Validation(
"Templates.InterstitialGroupInSlot",
"В слоте группа роликов — в эфир уйдёт полоса рекламы, подписанная как программа. "
+ "Ролики ставятся врезками стыка, а не слотом."
);
public static readonly Error InterstitialFallbackGroup = Error.Validation(
"Templates.InterstitialFallbackGroup",
"Аварийной группой выбрана группа роликов — тогда каждая пауза в эфире станет рекламой. "
+ "Выберите группу контента или снимите её вовсе."
);
public static readonly Error JunctionNotFound = Error.NotFound(
"Templates.JunctionNotFound",
"Шаблон стыка не найден."
);
public static readonly Error JunctionElementNotFound = Error.NotFound(
"Templates.JunctionElementNotFound",
"Врезка не найдена."
);
/// <summary>Стык общий, поэтому держать его может слот чужого канала — называем какого.</summary>
public static Error JunctionInUse(string where) =>
Error.Conflict(
"Templates.JunctionInUse",
where.Length > 0
? $"Стык используется ({where}) — сначала отвяжите его там."
: "Стык используется слотами — сначала отвяжите его."
);
public static readonly Error JunctionGroupRequired = Error.Validation(
"Templates.JunctionGroupRequired",
"Врезке нужна группа, откуда брать ролики."
);
public static readonly Error NothingToRestore = Error.Validation(
"Templates.NothingToRestore",
"Откатывать не к чему: сетка ещё ни разу не применялась."
);
public static readonly Error NoGroupsToGenerate = Error.Validation(
"Templates.NoGroupsToGenerate",
"Собирать сетку не из чего: нет ни одной группы с готовым медиа."
);
public static readonly Error RepeatSourceRequired = Error.Validation(
"Templates.RepeatSourceRequired",
"Слоту-повтору нужно указать, что повторять."
);
}