public async Task <Either <BaseError, Unit> > Handle(CreateFillerPreset request, CancellationToken cancellationToken)
    {
        try
        {
            await using TvContext dbContext = await _dbContextFactory.CreateDbContextAsync(cancellationToken);

            var fillerPreset = new FillerPreset
            {
                Name               = request.Name,
                FillerKind         = request.FillerKind,
                FillerMode         = request.FillerMode,
                Duration           = request.Duration,
                Count              = request.Count,
                PadToNearestMinute = request.PadToNearestMinute,
                CollectionType     = request.CollectionType,
                CollectionId       = request.CollectionId,
                MediaItemId        = request.MediaItemId,
                MultiCollectionId  = request.MultiCollectionId,
                SmartCollectionId  = request.SmartCollectionId
            };

            await dbContext.FillerPresets.AddAsync(fillerPreset, cancellationToken);

            await dbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Default);
        }
        catch (Exception ex)
        {
            _client.Notify(ex);
            return(BaseError.New(ex.Message));
        }
    }
        public void Should_Not_Touch_Enumerator()
        {
            var collection = new Collection
            {
                Id         = 1,
                Name       = "Filler Items",
                MediaItems = new List <MediaItem>()
            };

            for (var i = 0; i < 5; i++)
            {
                collection.MediaItems.Add(TestMovie(i + 1, TimeSpan.FromHours(i + 1), new DateTime(2020, 2, i + 1)));
            }

            var fillerPreset = new FillerPreset
            {
                FillerKind   = FillerKind.PreRoll,
                FillerMode   = FillerMode.Count,
                Count        = 3,
                Collection   = collection,
                CollectionId = collection.Id
            };

            var enumerator = new ChronologicalMediaCollectionEnumerator(
                collection.MediaItems,
                new CollectionEnumeratorState {
                Index = 0, Seed = 1
            });

            DateTimeOffset result = PlayoutModeSchedulerBase <ProgramScheduleItem>
                                    .CalculateEndTimeWithFiller(
                new Dictionary <CollectionKey, IMediaCollectionEnumerator>
            {
                { CollectionKey.ForFillerPreset(fillerPreset), enumerator }
            },
                new ProgramScheduleItemOne
            {
                PreRollFiller = fillerPreset
            },
                new DateTimeOffset(2020, 2, 1, 12, 0, 0, TimeSpan.FromHours(-5)),
                new TimeSpan(0, 12, 30),
                new List <MediaChapter>());

            result.Should().Be(new DateTimeOffset(2020, 2, 1, 18, 12, 30, TimeSpan.FromHours(-5)));
            enumerator.State.Index.Should().Be(0);
            enumerator.State.Seed.Should().Be(1);
        }
Ejemplo n.º 3
0
 internal static FillerPresetViewModel ProjectToViewModel(FillerPreset fillerPreset) =>