Browse Source

block history fixes (#2307)

* fix deco to only have one collection id for filler/fallback

* fix duplicate playout history for deco filler
dependabot/nuget/ErsatzTV.Infrastructure/Elastic.Clients.Elasticsearch-9.1.3
Jason Dove 5 days ago committed by GitHub
parent
commit
ac75a67709
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 68
      ErsatzTV.Application/Scheduling/Commands/UpdateDecoHandler.cs
  2. 2
      ErsatzTV.Core/Scheduling/BlockScheduling/BlockPlayoutBuilder.cs
  3. 8
      ErsatzTV.Core/Scheduling/BlockScheduling/BlockPlayoutFillerBuilder.cs

68
ErsatzTV.Application/Scheduling/Commands/UpdateDecoHandler.cs

@ -53,35 +53,55 @@ public class UpdateDecoHandler(IDbContextFactory<TvContext> dbContextFactory)
// default filler // default filler
existing.DefaultFillerMode = request.DefaultFillerMode; existing.DefaultFillerMode = request.DefaultFillerMode;
existing.DefaultFillerCollectionType = request.DefaultFillerCollectionType; existing.DefaultFillerCollectionType = request.DefaultFillerCollectionType;
existing.DefaultFillerCollectionId = request.DefaultFillerMode is DecoMode.Override existing.DefaultFillerCollectionId = null;
? request.DefaultFillerCollectionId existing.DefaultFillerMediaItemId = null;
: null; existing.DefaultFillerMultiCollectionId = null;
existing.DefaultFillerMediaItemId = request.DefaultFillerMode is DecoMode.Override existing.DefaultFillerSmartCollectionId = null;
? request.DefaultFillerMediaItemId if (request.DefaultFillerMode is DecoMode.Override)
: null; {
existing.DefaultFillerMultiCollectionId = request.DefaultFillerMode is DecoMode.Override switch (request.DefaultFillerCollectionType)
? request.DefaultFillerMultiCollectionId {
: null; case ProgramScheduleItemCollectionType.Collection:
existing.DefaultFillerSmartCollectionId = request.DefaultFillerMode is DecoMode.Override existing.DefaultFillerCollectionId = request.DefaultFillerCollectionId;
? request.DefaultFillerSmartCollectionId break;
: null; case ProgramScheduleItemCollectionType.MultiCollection:
existing.DefaultFillerMultiCollectionId = request.DefaultFillerMultiCollectionId;
break;
case ProgramScheduleItemCollectionType.SmartCollection:
existing.DefaultFillerSmartCollectionId = request.DefaultFillerSmartCollectionId;
break;
default:
existing.DefaultFillerMediaItemId = request.DefaultFillerMediaItemId;
break;
}
}
existing.DefaultFillerTrimToFit = request.DefaultFillerTrimToFit; existing.DefaultFillerTrimToFit = request.DefaultFillerTrimToFit;
// dead air fallback // dead air fallback
existing.DeadAirFallbackMode = request.DeadAirFallbackMode; existing.DeadAirFallbackMode = request.DeadAirFallbackMode;
existing.DeadAirFallbackCollectionType = request.DeadAirFallbackCollectionType; existing.DeadAirFallbackCollectionType = request.DeadAirFallbackCollectionType;
existing.DeadAirFallbackCollectionId = request.DeadAirFallbackMode is DecoMode.Override existing.DeadAirFallbackCollectionId = null;
? request.DeadAirFallbackCollectionId existing.DeadAirFallbackMediaItemId = null;
: null; existing.DeadAirFallbackMultiCollectionId = null;
existing.DeadAirFallbackMediaItemId = request.DeadAirFallbackMode is DecoMode.Override existing.DeadAirFallbackSmartCollectionId = null;
? request.DeadAirFallbackMediaItemId if (request.DeadAirFallbackMode is DecoMode.Override)
: null; {
existing.DeadAirFallbackMultiCollectionId = request.DeadAirFallbackMode is DecoMode.Override switch (request.DeadAirFallbackCollectionType)
? request.DeadAirFallbackMultiCollectionId {
: null; case ProgramScheduleItemCollectionType.Collection:
existing.DeadAirFallbackSmartCollectionId = request.DeadAirFallbackMode is DecoMode.Override existing.DeadAirFallbackCollectionId = request.DeadAirFallbackCollectionId;
? request.DeadAirFallbackSmartCollectionId break;
: null; case ProgramScheduleItemCollectionType.MultiCollection:
existing.DeadAirFallbackMultiCollectionId = request.DeadAirFallbackMultiCollectionId;
break;
case ProgramScheduleItemCollectionType.SmartCollection:
existing.DeadAirFallbackSmartCollectionId = request.DeadAirFallbackSmartCollectionId;
break;
default:
existing.DeadAirFallbackMediaItemId = request.DeadAirFallbackMediaItemId;
break;
}
}
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();

2
ErsatzTV.Core/Scheduling/BlockScheduling/BlockPlayoutBuilder.cs

@ -72,7 +72,7 @@ public class BlockPlayoutBuilder(
BlockPlayoutChangeDetection.GetPlayoutItemToBlockKeyMap(referenceData); BlockPlayoutChangeDetection.GetPlayoutItemToBlockKeyMap(referenceData);
// remove items without a block key (shouldn't happen often, just upgrades) // remove items without a block key (shouldn't happen often, just upgrades)
foreach (var item in referenceData.ExistingItems.Where(i => !itemBlockKeys.ContainsKey(i))) foreach (var item in referenceData.ExistingItems.Where(i => i.FillerKind is not FillerKind.DecoDefault && !itemBlockKeys.ContainsKey(i)))
{ {
result.ItemsToRemove.Add(item.Id); result.ItemsToRemove.Add(item.Id);
} }

8
ErsatzTV.Core/Scheduling/BlockScheduling/BlockPlayoutFillerBuilder.cs

@ -31,10 +31,6 @@ public class BlockPlayoutFillerBuilder(
.Where(i => !result.ItemsToRemove.Contains(i.Id)) .Where(i => !result.ItemsToRemove.Contains(i.Id))
.ToList(); .ToList();
var filteredExistingHistory = referenceData.PlayoutHistory
.Where(h => !result.HistoryToRemove.Contains(h.Id))
.ToList();
var allItems = result.AddedItems.ToList(); var allItems = result.AddedItems.ToList();
if (mode is PlayoutBuildMode.Reset) if (mode is PlayoutBuildMode.Reset)
@ -57,6 +53,10 @@ public class BlockPlayoutFillerBuilder(
allItems.AddRange(filteredExistingItems); allItems.AddRange(filteredExistingItems);
} }
var filteredExistingHistory = referenceData.PlayoutHistory
.Where(h => !result.HistoryToRemove.Contains(h.Id))
.ToList();
var collectionEnumerators = new Dictionary<CollectionKey, IMediaCollectionEnumerator>(); var collectionEnumerators = new Dictionary<CollectionKey, IMediaCollectionEnumerator>();
// find all unscheduled periods // find all unscheduled periods

Loading…
Cancel
Save