diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-03-31 15:41:12 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-03-31 15:41:12 -0400 |
| commit | be74de0236a3544959722b3a8ff9c9ca26c73d13 (patch) | |
| tree | 292d0abda239cd3966840b7e93568580209bf189 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | aa079120059699f4778d80f55e68883d75d26b3a (diff) | |
| parent | 2626b6f3729097e083f381936738d17335f48f1c (diff) | |
Merge pull request #1058 from MediaBrowser/dev
3.0.5569.0
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 66 |
1 files changed, 44 insertions, 22 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 880d57b9a..609c1048f 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -55,21 +55,29 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{ItemsResult}.</returns> protected ItemsResult GetResult(GetItemsByName request) { + var dtoOptions = GetDtoOptions(request); + User user = null; BaseItem parentItem; - List<BaseItem> libraryItems; + List<BaseItem> libraryItems = null; if (request.UserId.HasValue) { user = UserManager.GetUserById(request.UserId.Value); parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId); - libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); + if (RequiresLibraryItems(request, dtoOptions)) + { + libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); + } } else { parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : LibraryManager.GetItemById(request.ParentId); - libraryItems = LibraryManager.RootFolder.GetRecursiveChildren().ToList(); + if (RequiresLibraryItems(request, dtoOptions)) + { + libraryItems = LibraryManager.RootFolder.GetRecursiveChildren().ToList(); + } } IEnumerable<BaseItem> items; @@ -133,17 +141,46 @@ namespace MediaBrowser.Api.UserLibrary } - var tuples = ibnItems.Select(i => new Tuple<TItemType, List<BaseItem>>(i, i.GetTaggedItems(libraryItems).ToList())); - - var dtoOptions = GetDtoOptions(request); + IEnumerable<Tuple<TItemType, List<BaseItem>>> tuples; + if (dtoOptions.Fields.Contains(ItemFields.ItemCounts) || true) + { + tuples = ibnItems.Select(i => new Tuple<TItemType, List<BaseItem>>(i, i.GetTaggedItems(libraryItems).ToList())); + } + else + { + tuples = ibnItems.Select(i => new Tuple<TItemType, List<BaseItem>>(i, new List<BaseItem>())); + } - var dtos = tuples.Select(i => GetDto(i.Item1, user, dtoOptions, i.Item2)); + var dtos = tuples.Select(i => DtoService.GetItemByNameDto(i.Item1, dtoOptions, i.Item2, user)); result.Items = dtos.Where(i => i != null).ToArray(); return result; } + private bool RequiresLibraryItems(GetItemsByName request, DtoOptions options) + { + var filters = request.GetFilters().ToList(); + + if (filters.Contains(ItemFilter.IsPlayed)) + { + return true; + } + + if (filters.Contains(ItemFilter.IsUnplayed)) + { + return true; + } + + if (request.IsPlayed.HasValue) + { + return true; + } + + return true; + return options.Fields.Contains(ItemFields.ItemCounts); + } + private IEnumerable<TItemType> FilterByLibraryItems(GetItemsByName request, IEnumerable<TItemType> items, User user, IEnumerable<BaseItem> libraryItems) { var filters = request.GetFilters().ToList(); @@ -340,21 +377,6 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="items">The items.</param> /// <returns>IEnumerable{Task{`0}}.</returns> protected abstract IEnumerable<TItemType> GetAllItems(GetItemsByName request, IEnumerable<BaseItem> items); - - /// <summary> - /// Gets the dto. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="user">The user.</param> - /// <param name="options">The options.</param> - /// <param name="libraryItems">The library items.</param> - /// <returns>Task{DtoBaseItem}.</returns> - private BaseItemDto GetDto(TItemType item, User user, DtoOptions options, List<BaseItem> libraryItems) - { - var dto = DtoService.GetItemByNameDto(item, options, libraryItems, user); - - return dto; - } } /// <summary> |
