From c745d01a2c30f02b5eb2fd1cd58d7e65a6df2d60 Mon Sep 17 00:00:00 2001 From: Timothy Date: Tue, 7 Jul 2026 20:00:48 +0200 Subject: [PATCH] fix(app): bound deco template item times to a single day (#144 S4 review) Out-of-range TimeSpans (25:00:00, 1.06:00:00, negatives) previously persisted raw while the read side projected .TimeOfDay, so display and playout behavior diverged silently. Co-Authored-By: Claude Fable 5 --- .../Scheduling/Commands/ReplaceDecoTemplateItemsHandler.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ErsatzTV.Application/Scheduling/Commands/ReplaceDecoTemplateItemsHandler.cs b/ErsatzTV.Application/Scheduling/Commands/ReplaceDecoTemplateItemsHandler.cs index 7d67f1364..42035aaa2 100644 --- a/ErsatzTV.Application/Scheduling/Commands/ReplaceDecoTemplateItemsHandler.cs +++ b/ErsatzTV.Application/Scheduling/Commands/ReplaceDecoTemplateItemsHandler.cs @@ -99,6 +99,13 @@ public class ReplaceDecoTemplateItemsHandler(IDbContextFactory dbCont foreach (DecoTemplateItemRange item in itemsWithEffectiveEnd) { + if (item.StartTime < TimeSpan.Zero || item.StartTime >= TimeSpan.FromHours(24) || + item.EndTime < TimeSpan.Zero || item.EndTime > TimeSpan.FromHours(24)) + { + return BaseError.New( + $"Deco from {item.StartTime} to {item.EndTime} must be within a single day (00:00 to 24:00)"); + } + if (item.StartTime >= item.EffectiveEndTime) { return BaseError.New(