Browse Source

validate filler mode pad settings (#1516)

pull/1517/head
Jason Dove 2 years ago committed by GitHub
parent
commit
c6ed258021
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      CHANGELOG.md
  2. 11
      ErsatzTV.Core/Scheduling/PlayoutModeSchedulerBase.cs
  3. 3
      ErsatzTV/Validators/FillerPresetEditViewModelValidator.cs

3
CHANGELOG.md

@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Fixed
- Fix playout builder crash with improperly configured pad filler preset
- Properly validate filler preset mode pad to require `filler pad to nearest minute` value
## [0.8.3-beta] - 2023-11-22
### Added

11
ErsatzTV.Core/Scheduling/PlayoutModeSchedulerBase.cs

@ -223,6 +223,17 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe @@ -223,6 +223,17 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe
Logger.LogError("Multiple pad-to-nearest-minute values are invalid; no filler will be used");
return new List<PlayoutItem> { playoutItem };
}
// missing pad-to-nearest-minute value is invalid; use no filler
FillerPreset invalidPadFiller = allFiller
.FirstOrDefault(f => f.FillerMode == FillerMode.Pad && f.PadToNearestMinute.HasValue == false);
if (invalidPadFiller is not null)
{
Logger.LogError(
"Pad filler ({Filler}) without pad-to-nearest-minute value is invalid; no filler will be used",
invalidPadFiller.Name);
return new List<PlayoutItem> { playoutItem };
}
List<MediaChapter> effectiveChapters = chapters;
if (allFiller.All(fp => fp.FillerKind != FillerKind.MidRoll) || effectiveChapters.Count <= 1)

3
ErsatzTV/Validators/FillerPresetEditViewModelValidator.cs

@ -21,6 +21,9 @@ public class FillerPresetEditViewModelValidator : AbstractValidator<FillerPreset @@ -21,6 +21,9 @@ public class FillerPresetEditViewModelValidator : AbstractValidator<FillerPreset
When(
fp => fp.FillerMode == FillerMode.Duration,
() => RuleFor(fp => fp.Duration).NotNull());
When(
fp => fp.FillerMode == FillerMode.Pad,
() => RuleFor(fp => fp.PadToNearestMinute).NotNull());
When(
fp => fp.CollectionType == ProgramScheduleItemCollectionType.Collection,

Loading…
Cancel
Save