Exemplo n.º 1
0
 private static Task <Validation <BaseError, Collection> > CollectionMustExist(
     TvContext dbContext,
     UpdateCollectionCustomOrder request) =>
 dbContext.Collections
 .Include(c => c.CollectionItems)
 .SelectOneAsync(c => c.Id, c => c.Id == request.CollectionId)
 .Map(o => o.ToValidation <BaseError>("Collection does not exist."));
Exemplo n.º 2
0
    private async Task <Unit> ApplyUpdateRequest(
        TvContext dbContext,
        Collection c,
        UpdateCollectionCustomOrder request)
    {
        foreach (MediaItemCustomOrder updateItem in request.MediaItemCustomOrders)
        {
            Option <CollectionItem> maybeCollectionItem = c.CollectionItems
                                                          .FirstOrDefault(ci => ci.MediaItemId == updateItem.MediaItemId);

            foreach (CollectionItem collectionItem in maybeCollectionItem)
            {
                collectionItem.CustomIndex = updateItem.CustomIndex;
            }
        }

        if (await dbContext.SaveChangesAsync() > 0)
        {
            // refresh all playouts that use this collection
            foreach (int playoutId in await _mediaCollectionRepository
                     .PlayoutIdsUsingCollection(request.CollectionId))
            {
                await _channel.WriteAsync(new BuildPlayout(playoutId, PlayoutBuildMode.Refresh));
            }
        }

        return(Unit.Default);
    }
Exemplo n.º 3
0
    public async Task <Either <BaseError, Unit> > Handle(
        UpdateCollectionCustomOrder request,
        CancellationToken cancellationToken)
    {
        await using TvContext dbContext = await _dbContextFactory.CreateDbContextAsync(cancellationToken);

        Validation <BaseError, Collection> validation = await Validate(dbContext, request);

        return(await LanguageExtensions.Apply(validation, c => ApplyUpdateRequest(dbContext, c, request)));
    }
Exemplo n.º 4
0
        private async Task <Unit> ApplyUpdateRequest(Collection c, UpdateCollectionCustomOrder request)
        {
            foreach (MediaItemCustomOrder updateItem in request.MediaItemCustomOrders)
            {
                Option <CollectionItem> maybeCollectionItem =
                    c.CollectionItems.FirstOrDefault(ci => ci.MediaItemId == updateItem.MediaItemId);

                maybeCollectionItem.IfSome(ci => ci.CustomIndex = updateItem.CustomIndex);
            }

            if (await _mediaCollectionRepository.Update(c))
            {
                // rebuild all playouts that use this collection
                foreach (int playoutId in await _mediaCollectionRepository.PlayoutIdsUsingCollection(
                             request.CollectionId))
                {
                    await _channel.WriteAsync(new BuildPlayout(playoutId, true));
                }
            }

            return(Unit.Default);
        }
Exemplo n.º 5
0
 private static Task <Validation <BaseError, Collection> > Validate(
     TvContext dbContext,
     UpdateCollectionCustomOrder request) =>
 CollectionMustExist(dbContext, request);
Exemplo n.º 6
0
 private Task <Validation <BaseError, Collection> > CollectionMustExist(
     UpdateCollectionCustomOrder request) =>
 _mediaCollectionRepository.Get(request.CollectionId)
 .Map(v => v.ToValidation <BaseError>("Collection does not exist."));
Exemplo n.º 7
0
 private Task <Validation <BaseError, Collection> > Validate(UpdateCollectionCustomOrder request) =>
 CollectionMustExist(request);
Exemplo n.º 8
0
 public Task <Either <BaseError, Unit> > Handle(
     UpdateCollectionCustomOrder request,
     CancellationToken cancellationToken) =>
 Validate(request)
 .MapT(c => ApplyUpdateRequest(c, request))
 .Bind(v => v.ToEitherAsync());