aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-11 15:36:50 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-11 15:36:50 -0400
commite3f7dcac19dbe08b68721d6ef8b1cdd2393649c5 (patch)
tree66ed87da6bfaa09dfcaf190163e39f9fb3d91eb8 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
parent8f643ad7718baf1d81d835df939ba6099fe5d9f6 (diff)
added movie and tv genre pages
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs29
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>