aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-14 15:03:35 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-14 15:03:35 -0500
commitf4b890f163cd3be5b399ef03be409106ab8ff60b (patch)
tree5142c6f6772b39582922d637a94f5953db9b0158 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
parent3cde2011904de6a874b17cab97fbc984ce62c228 (diff)
added new item by name filters
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index 15926e983..dec35100d 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -93,6 +93,8 @@ namespace MediaBrowser.Api.UserLibrary
var filteredItems = FilterItems(request, extractedItems, user);
+ filteredItems = FilterByLibraryItems(request, filteredItems, user);
+
filteredItems = ItemsService.ApplySortOrder(request, filteredItems, user, LibraryManager).Cast<TItemType>();
var ibnItemsArray = filteredItems.ToList();
@@ -127,6 +129,39 @@ namespace MediaBrowser.Api.UserLibrary
return result;
}
+ private IEnumerable<TItemType> FilterByLibraryItems(GetItemsByName request, IEnumerable<TItemType> items, User user)
+ {
+ var filters = request.GetFilters().ToList();
+
+ if (filters.Contains(ItemFilter.IsPlayed))
+ {
+ var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList();
+
+ items = items.Where(i => GetLibraryItems(i, libraryItems).All(l =>
+ {
+ var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey());
+
+ return userdata != null && userdata.Played;
+ }));
+ }
+
+ if (filters.Contains(ItemFilter.IsUnplayed))
+ {
+ var libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList();
+
+ items = items.Where(i => GetLibraryItems(i, libraryItems).All(l =>
+ {
+ var userdata = UserDataRepository.GetUserData(user.Id, l.GetUserDataKey());
+
+ return userdata == null || !userdata.Played;
+ }));
+ }
+
+ return items;
+ }
+
+ protected abstract IEnumerable<BaseItem> GetLibraryItems(TItemType item, IEnumerable<BaseItem> libraryItems);
+
/// <summary>
/// Filters the items.
/// </summary>