diff options
| author | Techywarrior <techywarrior@gmail.com> | 2013-04-13 11:11:19 -0700 |
|---|---|---|
| committer | Techywarrior <techywarrior@gmail.com> | 2013-04-13 11:11:19 -0700 |
| commit | 6b47336da308c77e441b82c6a985db88c6d3ade3 (patch) | |
| tree | 455a36e52c4ca35e3b38060f96904fa4be5ee854 /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | dc8d9810b7a99bdcbc4959a77750b3cfee1e88b5 (diff) | |
| parent | 157a53a9f6d88c7f9db2346e42e010fe98734204 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 6801e14f0..42aafd2cd 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -1,6 +1,7 @@ -using System.Threading; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Querying; using ServiceStack.ServiceHost; @@ -8,6 +9,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Api.UserLibrary @@ -27,16 +29,19 @@ namespace MediaBrowser.Api.UserLibrary /// The library manager /// </summary> protected readonly ILibraryManager LibraryManager; + protected readonly IUserDataRepository UserDataRepository; /// <summary> /// Initializes a new instance of the <see cref="BaseItemsByNameService{TItemType}" /> class. /// </summary> /// <param name="userManager">The user manager.</param> /// <param name="libraryManager">The library manager.</param> - protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager) + /// <param name="userDataRepository">The user data repository.</param> + protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository) { UserManager = userManager; LibraryManager = libraryManager; + UserDataRepository = userDataRepository; } /// <summary> @@ -132,18 +137,19 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>IEnumerable{BaseItem}.</returns> private IEnumerable<BaseItem> FilterItems(GetItemsByName request, IEnumerable<BaseItem> items, User user) { - items = items.AsParallel(); - - 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)) + // Exclude item types + if (!string.IsNullOrEmpty(request.ExcludeItemTypes)) { - items = ItemsService.ApplyFilter(items, filter, user, UserManager); + var vals = request.ExcludeItemTypes.Split(','); + items = items.Where(f => !vals.Contains(f.GetType().Name, StringComparer.OrdinalIgnoreCase)); } - items = items.AsEnumerable(); + // Include item types + if (!string.IsNullOrEmpty(request.IncludeItemTypes)) + { + var vals = request.IncludeItemTypes.Split(','); + items = items.Where(f => vals.Contains(f.GetType().Name, StringComparer.OrdinalIgnoreCase)); + } return items; } @@ -185,7 +191,7 @@ namespace MediaBrowser.Api.UserLibrary return null; } - var dto = await new DtoBuilder(Logger, LibraryManager, UserManager).GetBaseItemDto(item, user, fields).ConfigureAwait(false); + var dto = await new DtoBuilder(Logger, LibraryManager, UserDataRepository).GetBaseItemDto(item, user, fields).ConfigureAwait(false); if (fields.Contains(ItemFields.ItemCounts)) { @@ -211,13 +217,15 @@ namespace MediaBrowser.Api.UserLibrary var item = await getItem().ConfigureAwait(false); + var key = item.GetUserDataKey(); + // Get the user data for this item - var data = await UserManager.GetUserData(user.Id, item.UserDataId).ConfigureAwait(false); + var data = await UserDataRepository.GetUserData(user.Id, key).ConfigureAwait(false); // Set favorite status data.IsFavorite = isFavorite; - await UserManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None).ConfigureAwait(false); + await UserDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None).ConfigureAwait(false); } } |
