diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-14 15:03:35 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-01-14 15:03:35 -0500 |
| commit | f4b890f163cd3be5b399ef03be409106ab8ff60b (patch) | |
| tree | 5142c6f6772b39582922d637a94f5953db9b0158 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | 3cde2011904de6a874b17cab97fbc984ce62c228 (diff) | |
added new item by name filters
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 35 |
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> |
