diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-11 15:36:50 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-11 15:36:50 -0400 |
| commit | e3f7dcac19dbe08b68721d6ef8b1cdd2393649c5 (patch) | |
| tree | 66ed87da6bfaa09dfcaf190163e39f9fb3d91eb8 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | 8f643ad7718baf1d81d835df939ba6099fe5d9f6 (diff) | |
added movie and tv genre pages
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index a0ad1fb2a..f96a4baa7 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -62,7 +62,12 @@ namespace MediaBrowser.Api.UserLibrary items = new[] { item }; } + items = FilterItems(request, items, user); + + items = ItemsService.ApplySortOrder(request, items, user, LibraryManager); + var ibnItemsArray = GetAllItems(request, items, user).ToArray(); + IEnumerable<Tuple<string, Func<int>>> ibnItems = ibnItemsArray; var result = new ItemsResult @@ -84,7 +89,7 @@ namespace MediaBrowser.Api.UserLibrary } - var fields = GetItemFields(request).ToList(); + var fields = request.GetItemFields().ToList(); var tasks = ibnItems.Select(i => GetDto(i, user, fields)); @@ -96,20 +101,28 @@ namespace MediaBrowser.Api.UserLibrary } /// <summary> - /// Gets the item fields. + /// Filters the items. /// </summary> /// <param name="request">The request.</param> - /// <returns>IEnumerable{ItemFields}.</returns> - private IEnumerable<ItemFields> GetItemFields(GetItemsByName request) + /// <param name="items">The items.</param> + /// <param name="user">The user.</param> + /// <returns>IEnumerable{BaseItem}.</returns> + private IEnumerable<BaseItem> FilterItems(GetItemsByName request, IEnumerable<BaseItem> items, User user) { - var val = request.Fields; + items = items.AsParallel(); - if (string.IsNullOrEmpty(val)) + items = ItemsService.ApplyAdditionalFilters(request, items); + + // Apply filters + // Run them starting with the ones that are likely to reduce the list the most + foreach (var filter in request.GetFilters().OrderByDescending(f => (int)f)) { - return new ItemFields[] { }; + items = ItemsService.ApplyFilter(items, filter, user, UserManager); } - return val.Split(',').Select(v => (ItemFields)Enum.Parse(typeof(ItemFields), v, true)); + items = items.AsEnumerable(); + + return items; } /// <summary> |
