From 71351344d7f5a9057fe19b754f5d14d917e79d60 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 3 Jun 2014 22:53:22 -0400 Subject: [PATCH] fixes #827 - Alpha filtering incorrectly includes all collections --- MediaBrowser.Api/UserLibrary/ItemsService.cs | 35 ++++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index c7f36e6ac9..28337344a1 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -326,6 +326,8 @@ namespace MediaBrowser.Api.UserLibrary items = _collectionManager.CollapseItemsWithinBoxSets(items, user); } + items = ApplyPostCollectionCollapseFilters(request, items, user); + items = ApplySortOrder(request, items, user, _libraryManager); // This must be the last filter @@ -811,20 +813,6 @@ namespace MediaBrowser.Api.UserLibrary items = items.Where(f => !vals.Contains(f.LocationType.ToString(), StringComparer.OrdinalIgnoreCase)); } - if (!string.IsNullOrEmpty(request.NameStartsWithOrGreater)) - { - items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1); - } - if (!string.IsNullOrEmpty(request.NameStartsWith)) - { - items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0); - } - - if (!string.IsNullOrEmpty(request.NameLessThan)) - { - items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); - } - if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) { items = items.OfType() @@ -1231,6 +1219,25 @@ namespace MediaBrowser.Api.UserLibrary return items; } + private IEnumerable ApplyPostCollectionCollapseFilters(GetItems request, IEnumerable items, User user) + { + if (!string.IsNullOrEmpty(request.NameStartsWithOrGreater)) + { + items = items.Where(i => string.Compare(request.NameStartsWithOrGreater, i.SortName, StringComparison.CurrentCultureIgnoreCase) < 1); + } + if (!string.IsNullOrEmpty(request.NameStartsWith)) + { + items = items.Where(i => string.Compare(request.NameStartsWith, i.SortName.Substring(0, 1), StringComparison.CurrentCultureIgnoreCase) == 0); + } + + if (!string.IsNullOrEmpty(request.NameLessThan)) + { + items = items.Where(i => string.Compare(request.NameLessThan, i.SortName, StringComparison.CurrentCultureIgnoreCase) == 1); + } + + return items; + } + private bool IsYearMismatched(BaseItem item) { if (item.ProductionYear.HasValue)