Browse Source

fix alternate schedule playout update check (#1106)

* fix alternate schedule playout update check

* Revert "use mknejp/delete-release-assets again"

This reverts commit 07ac833067.
pull/1107/head
Jason Dove 2 years ago committed by GitHub
parent
commit
eb7871a048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      .github/workflows/artifacts.yml
  2. 54
      ErsatzTV.Application/Playouts/Commands/ReplacePlayoutAlternateScheduleItemsHandler.cs

4
.github/workflows/artifacts.yml

@ -133,7 +133,7 @@ jobs: @@ -133,7 +133,7 @@ jobs:
rm -r ErsatzTV.app
- name: Delete old release assets
uses: mknejp/delete-release-assets@v1
uses: asfernandes/delete-release-assets@update-libraries-and-node
if: ${{ inputs.release_tag == 'develop' }}
with:
token: ${{ secrets.gh_token }}
@ -250,7 +250,7 @@ jobs: @@ -250,7 +250,7 @@ jobs:
AC_PASSWORD: ${{ secrets.ac_password }}
- name: Delete old release assets
uses: mknejp/delete-release-assets@v1
uses: asfernandes/delete-release-assets@update-libraries-and-node
if: ${{ inputs.release_tag == 'develop' }}
with:
token: ${{ secrets.gh_token }}

54
ErsatzTV.Application/Playouts/Commands/ReplacePlayoutAlternateScheduleItemsHandler.cs

@ -44,8 +44,33 @@ public class ReplacePlayoutAlternateScheduleItemsHandler : @@ -44,8 +44,33 @@ public class ReplacePlayoutAlternateScheduleItemsHandler :
foreach (Playout playout in maybePlayout)
{
ProgramSchedule existingDefault = playout.ProgramSchedule;
var existingScheduleMap = new Dictionary<DateTimeOffset, ProgramSchedule>();
var daysToCheck = new List<DateTimeOffset>();
Option<PlayoutItem> maybeLastPlayoutItem = await dbContext.PlayoutItems
.Filter(pi => pi.PlayoutId == request.PlayoutId)
.OrderByDescending(pi => pi.Start)
.FirstOrDefaultAsync(cancellationToken)
.Map(Optional);
foreach (PlayoutItem lastPlayoutItem in maybeLastPlayoutItem)
{
DateTimeOffset start = DateTimeOffset.Now;
daysToCheck = Enumerable.Range(0, (lastPlayoutItem.StartOffset - start).Days + 1)
.Select(d => start.AddDays(d))
.ToList();
foreach (DateTimeOffset dayToCheck in daysToCheck)
{
ProgramSchedule schedule = PlayoutScheduleSelector.GetProgramScheduleFor(
playout.ProgramSchedule,
playout.ProgramScheduleAlternates,
dayToCheck);
existingScheduleMap.Add(dayToCheck, schedule);
}
}
// exclude highest index
int maxIndex = request.Items.Map(x => x.Index).Max();
ReplacePlayoutAlternateSchedule highest = request.Items.First(x => x.Index == maxIndex);
@ -93,39 +118,24 @@ public class ReplacePlayoutAlternateScheduleItemsHandler : @@ -93,39 +118,24 @@ public class ReplacePlayoutAlternateScheduleItemsHandler :
}
await dbContext.SaveChangesAsync(cancellationToken);
Option<PlayoutItem> maybePlayoutItem = await dbContext.PlayoutItems
.Filter(pi => pi.PlayoutId == request.PlayoutId)
.OrderByDescending(pi => pi.Start)
.FirstOrDefaultAsync(cancellationToken)
.Map(Optional);
foreach (PlayoutItem playoutItem in maybePlayoutItem)
foreach (PlayoutItem _ in maybeLastPlayoutItem)
{
DateTimeOffset start = DateTimeOffset.Now;
var daysToCheck = Enumerable.Range(0, (playoutItem.StartOffset - start).Days + 1)
.Select(d => start.AddDays(d))
.ToList();
foreach (DateTimeOffset dayToCheck in daysToCheck)
{
ProgramSchedule oldSchedule = PlayoutScheduleSelector.GetProgramScheduleFor(
existingDefault,
existing,
dayToCheck);
ProgramSchedule newSchedule = PlayoutScheduleSelector.GetProgramScheduleFor(
ProgramSchedule schedule = PlayoutScheduleSelector.GetProgramScheduleFor(
playout.ProgramSchedule,
playout.ProgramScheduleAlternates,
dayToCheck);
if (oldSchedule.Id != newSchedule.Id)
if (existingScheduleMap.TryGetValue(dayToCheck, out ProgramSchedule existingValue) &&
existingValue.Id != schedule.Id)
{
_logger.LogInformation(
"Alternate schedule change detected for day {Day}, schedule {One} => {Two}; will refresh playout",
dayToCheck,
oldSchedule.Name,
newSchedule.Name);
existingValue.Name,
schedule.Name);
await _channel.WriteAsync(
new BuildPlayout(request.PlayoutId, PlayoutBuildMode.Refresh),

Loading…
Cancel
Save