private async Task <Unit> ApplyUpdateRequest(Collection c, UpdateCollection request)
        {
            c.Name = request.Name;
            request.UseCustomPlaybackOrder.IfSome(
                useCustomPlaybackOrder => c.UseCustomPlaybackOrder = useCustomPlaybackOrder);
            if (await _mediaCollectionRepository.Update(c) && request.UseCustomPlaybackOrder.IsSome)
            {
                // 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);
        }
예제 #2
0
        private async Task <Unit> ApplyRemoveItemsRequest(
            RemoveItemsFromCollection request,
            Collection collection)
        {
            var itemsToRemove = collection.MediaItems
                                .Filter(m => request.MediaItemIds.Contains(m.Id))
                                .ToList();

            itemsToRemove.ForEach(m => collection.MediaItems.Remove(m));

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

            return(Unit.Default);
        }
예제 #3
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);
        }