Adds TemplateController mirroring BlockController: groups CRUD, template
CRUD, item replace (PUT full-replace via ReplaceTemplateItems), and a
copy endpoint. Also wires the missing POST /api/blocks/{id}/copy since
CopyBlock's CQRS shape is directly analogous to CopyTemplate.
Fixes CreateTemplateHandler to validate the target template group exists
before insert (previously an unhandled FK violation -> 500), matching the
CreateBlockHandler fix (1e34e00e) for the same class of bug.
New DTOs in ErsatzTV.Core/Api/Scheduling; TimeSpan start times serialize
the same way as PlayoutResponseModel.DailyRebuildTime.
#144 S2 (#162)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
14 lines
413 B
C#
14 lines
413 B
C#
using ErsatzTV.Application.Scheduling;
|
|
|
|
namespace ErsatzTV.Controllers.Api.Requests;
|
|
|
|
public record ReplaceTemplateRequest(string Name, List<TemplateItemRequest> Items)
|
|
{
|
|
public ReplaceTemplateItems ToCommand(int templateGroupId, int templateId) =>
|
|
new(
|
|
templateGroupId,
|
|
templateId,
|
|
Name,
|
|
(Items ?? []).Select(item => item.ToReplaceItem()).ToList());
|
|
}
|