public async Task <ActionResult> AddToCollection( [FromRoute, Required] Guid collectionId, [FromQuery, Required, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] Guid[] ids) { await _collectionManager.AddToCollectionAsync(collectionId, ids).ConfigureAwait(true); return(NoContent()); }
private async Task AddMoviesToCollection(IReadOnlyCollection <Movie> movies, string tmdbCollectionId, BoxSet boxSet) { int minimumNumberOfMovies = Plugin.Instance.PluginConfiguration.MinimumNumberOfMovies; if (movies.Count < minimumNumberOfMovies) { _logger.LogInformation("Minimum number of movies is {Count}, but there is/are only {MovieCount}: {MovieNames}", minimumNumberOfMovies, movies.Count, string.Join(", ", movies.Select(m => m.Name))); return; } // Create the box set if it doesn't exist, but don't add anything to it on creation if (boxSet == null) { var tmdbCollectionName = GetTmdbCollectionName(movies); if (string.IsNullOrWhiteSpace(tmdbCollectionName)) { _logger.LogError("Can't get a proper box set name for the movies {MovieNames}. Make sure is propertly assigned to the movie info.", string.Join(", ", movies.Select(m => m.Name))); return; } if (Plugin.Instance.PluginConfiguration.StripCollectionKeywords) { tmdbCollectionName = tmdbCollectionName.Replace("Collection", String.Empty).Trim(); } _logger.LogInformation("Box Set for {TmdbCollectionName} ({TmdbCollectionId}) does not exist. Creating it now!", tmdbCollectionName, tmdbCollectionId); boxSet = await _collectionManager.CreateCollectionAsync(new CollectionCreationOptions { Name = tmdbCollectionName, ProviderIds = new Dictionary <string, string> { { MetadataProvider.Tmdb.ToString(), tmdbCollectionId } } }).ConfigureAwait(false); } var itemsToAdd = movies .Where(m => !boxSet.ContainsLinkedChildByItemId(m.Id)) .Select(m => m.Id) .ToList(); if (!itemsToAdd.Any()) { _logger.LogInformation("The movies {MovieNames} is/are already in their proper box set, {BoxSetName}", string.Join(", ", movies.Select(m => m.Name)), boxSet.Name); return; } await _collectionManager.AddToCollectionAsync(boxSet.Id, itemsToAdd).ConfigureAwait(false); }
public async Task <ActionResult> AddToCollection([FromRoute, Required] Guid collectionId, [FromQuery, Required] string itemIds) { await _collectionManager.AddToCollectionAsync(collectionId, RequestHelpers.GetGuids(itemIds)).ConfigureAwait(true); return(NoContent()); }