diff options
| author | Luis Miguel Almánzar <ruisu15@gmail.com> | 2013-08-30 22:05:43 -0400 |
|---|---|---|
| committer | Luis Miguel Almánzar <ruisu15@gmail.com> | 2013-08-30 22:05:43 -0400 |
| commit | 744867d1c6e0f352276d8fdd8af241ff88c03494 (patch) | |
| tree | 085ac433d16fa859f97d7c0c6ae4f42c52f9b0d6 /MediaBrowser.Api/UserLibrary | |
| parent | 3f4dd4231d2225ab0d474840038a4de01b5f7391 (diff) | |
| parent | ae53683d08bc279040b7945c0ea269ff4b9a60e0 (diff) | |
Merge branch 'master' of github.com:MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 43 |
2 files changed, 43 insertions, 9 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 5e0bfca971..d06941bb81 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -172,6 +172,9 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "AdjacentTo", Description = "Optional. Return items that are siblings of a supplied item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string AdjacentTo { get; set; } + [ApiMember(Name = "MinIndexNumber", Description = "Optional filter index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? MinIndexNumber { get; set; } + /// <summary> /// Gets the order by. /// </summary> @@ -511,6 +514,12 @@ namespace MediaBrowser.Api.UserLibrary items = items.Where(i => i.Id == previousId || i.Id == nextId); } + // Min index number + if (request.MinIndexNumber.HasValue) + { + items = items.Where(i => i.IndexNumber.HasValue && i.IndexNumber.Value >= request.MinIndexNumber.Value); + } + // Min official rating if (!string.IsNullOrEmpty(request.MinOfficialRating)) { diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index a6c53b4a42..de25651ed7 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Session; @@ -325,7 +326,7 @@ namespace MediaBrowser.Api.UserLibrary /// Class GetSpecialFeatures /// </summary> [Route("/Users/{UserId}/Items/{Id}/SpecialFeatures", "GET")] - [Api(Description = "Gets special features for a movie")] + [Api(Description = "Gets special features for an item")] public class GetSpecialFeatures : IReturn<List<BaseItemDto>> { /// <summary> @@ -404,16 +405,40 @@ namespace MediaBrowser.Api.UserLibrary // Get everything var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList(); - var movie = (Movie)item; - var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo); - var tasks = movie.SpecialFeatureIds - .Select(_itemRepo.RetrieveItem) - .OrderBy(i => i.SortName) - .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, movie)); + var movie = item as Movie; - return Task.WhenAll(tasks); + // Get them from the db + if (movie != null) + { + // Avoid implicitly captured closure + var movie1 = movie; + + var tasks = movie.SpecialFeatureIds + .Select(_itemRepo.RetrieveItem) + .OrderBy(i => i.SortName) + .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, movie1)); + + return Task.WhenAll(tasks); + } + + var series = item as Series; + + // Get them from the child tree + if (series != null) + { + var tasks = series + .RecursiveChildren + .OfType<Episode>() + .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0) + .OrderBy(i => i.SortName) + .Select(i => dtoBuilder.GetBaseItemDto(i, fields, user)); + + return Task.WhenAll(tasks); + } + + throw new ArgumentException("The item does not support special features"); } /// <summary> @@ -589,7 +614,7 @@ namespace MediaBrowser.Api.UserLibrary return DtoBuilder.GetUserItemDataDto(data); } - + /// <summary> /// Posts the specified request. /// </summary> |
