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); }
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); }
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); }