diff --git a/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplate.cs b/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplate.cs index 3b39adf5e..d1b31f70c 100644 --- a/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplate.cs +++ b/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplate.cs @@ -11,5 +11,7 @@ public record ReplacePlayoutTemplate( bool LimitToDateRange, int StartMonth, int StartDay, + int? StartYear, int EndMonth, - int EndDay); + int EndDay, + int? EndYear); diff --git a/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplateItemsHandler.cs b/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplateItemsHandler.cs index 24e340351..a9c33ffdd 100644 --- a/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplateItemsHandler.cs +++ b/ErsatzTV.Application/Scheduling/Commands/ReplacePlayoutTemplateItemsHandler.cs @@ -59,8 +59,10 @@ public class ReplacePlayoutTemplateItemsHandler( LimitToDateRange = add.LimitToDateRange, StartMonth = add.StartMonth, StartDay = add.StartDay, + StartYear = add.StartYear, EndMonth = add.EndMonth, EndDay = add.EndDay, + EndYear = add.EndYear, DateUpdated = now }); } @@ -78,8 +80,10 @@ public class ReplacePlayoutTemplateItemsHandler( ex.LimitToDateRange = update.LimitToDateRange; ex.StartMonth = update.StartMonth; ex.StartDay = update.StartDay; + ex.StartYear = update.StartYear; ex.EndMonth = update.EndMonth; ex.EndDay = update.EndDay; + ex.EndYear = update.EndYear; ex.DateUpdated = now; } } diff --git a/ErsatzTV.Application/Scheduling/Mapper.cs b/ErsatzTV.Application/Scheduling/Mapper.cs index cb7af9d84..861d3266f 100644 --- a/ErsatzTV.Application/Scheduling/Mapper.cs +++ b/ErsatzTV.Application/Scheduling/Mapper.cs @@ -195,8 +195,10 @@ internal static class Mapper playoutTemplate.LimitToDateRange, playoutTemplate.StartMonth, playoutTemplate.StartDay, + playoutTemplate.StartYear, playoutTemplate.EndMonth, - playoutTemplate.EndDay); + playoutTemplate.EndDay, + playoutTemplate.EndYear); internal static PlayoutItemPreviewViewModel ProjectToViewModel(PlayoutItem playoutItem) => new( diff --git a/ErsatzTV.Application/Scheduling/PlayoutTemplateViewModel.cs b/ErsatzTV.Application/Scheduling/PlayoutTemplateViewModel.cs index 2440d99b0..064c90ed8 100644 --- a/ErsatzTV.Application/Scheduling/PlayoutTemplateViewModel.cs +++ b/ErsatzTV.Application/Scheduling/PlayoutTemplateViewModel.cs @@ -11,5 +11,7 @@ public record PlayoutTemplateViewModel( bool LimitToDateRange, int StartMonth, int StartDay, + int? StartYear, int EndMonth, - int EndDay); + int EndDay, + int? EndYear); diff --git a/ErsatzTV/Pages/PlayoutTemplatesEditor.razor b/ErsatzTV/Pages/PlayoutTemplatesEditor.razor index 0acf9e6a8..73c4ed049 100644 --- a/ErsatzTV/Pages/PlayoutTemplatesEditor.razor +++ b/ErsatzTV/Pages/PlayoutTemplatesEditor.razor @@ -3,7 +3,6 @@ @using System.Text @using ErsatzTV.Application.Channels @using ErsatzTV.Application.Scheduling -@using ErsatzTV.Core.Domain.Scheduling @using ErsatzTV.Core.Scheduling @implements IDisposable @inject NavigationManager NavigationManager @@ -39,7 +38,7 @@ @_channelName - Templates - In priority order from top to bottom. The bottom entry will *always* match all days and all months, as a catch-all. + In priority order from top to bottom. @@ -173,6 +172,15 @@ } + +
+ + @foreach (int year in Enumerable.Range(DateTime.Today.Year, 50)) + { + @year.ToString() + } + +
End Day @@ -193,6 +201,15 @@ } + +
+ + @foreach (int year in Enumerable.Range(DateTime.Today.Year, 50)) + { + @year.ToString() + } + +
Days of the Week @@ -323,8 +340,10 @@ LimitToDateRange = item.LimitToDateRange, StartMonth = item.StartMonth, StartDay = item.StartDay, + StartYear = item.StartYear, EndMonth = item.EndMonth, - EndDay = item.EndDay + EndDay = item.EndDay, + EndYear = item.EndYear }; private async Task UpdateTemplateGroupItems(TemplateGroupViewModel templateGroup) @@ -434,8 +453,10 @@ item.LimitToDateRange, item.StartMonth, item.StartDay, + item.StartYear, item.EndMonth, - item.EndDay)).ToList(); + item.EndDay, + item.EndYear)).ToList(); Option maybeError = await Mediator.Send(new ReplacePlayoutTemplateItems(Id, items), _cts.Token); diff --git a/ErsatzTV/ViewModels/PlayoutTemplateEditViewModel.cs b/ErsatzTV/ViewModels/PlayoutTemplateEditViewModel.cs index 7e0cc40d5..9b6909396 100644 --- a/ErsatzTV/ViewModels/PlayoutTemplateEditViewModel.cs +++ b/ErsatzTV/ViewModels/PlayoutTemplateEditViewModel.cs @@ -35,6 +35,8 @@ public class PlayoutTemplateEditViewModel set => _startDay = value; } + public int? StartYear { get; set; } + public int EndMonth { get => _endMonth == 0 ? 12 : _endMonth; @@ -47,6 +49,8 @@ public class PlayoutTemplateEditViewModel set => _endDay = value; } + public int? EndYear { get; set; } + public bool AppliesToDate(DateTime date) { // share the PlayoutTemplateSelector logic @@ -59,8 +63,10 @@ public class PlayoutTemplateEditViewModel LimitToDateRange = LimitToDateRange, StartMonth = StartMonth, StartDay = StartDay, + StartYear = StartYear, EndMonth = EndMonth, - EndDay = EndDay + EndDay = EndDay, + EndYear = EndYear }; TimeSpan offset = TimeZoneInfo.Local.GetUtcOffset(