diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-26 00:44:24 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-26 00:44:24 -0400 |
| commit | 70fb64cc05c4fe51e661608c654a4cd1949cba35 (patch) | |
| tree | e35def65b7c0860cad14a7a2014e1487e7c41cdd /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | 9f191a3598f8d1cc6764169943186987be33a707 (diff) | |
subtitle parsing fixes
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> |
