aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Library/LibraryService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-25 01:34:50 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-25 01:34:50 -0500
commita1a56557ece84d8b726a6c06b2620fa43ff22461 (patch)
treea9b96eccbe5fd08c34174f5c5cff8e01ac822fea /MediaBrowser.Api/Library/LibraryService.cs
parent67559378009062a26173888ad457d0c9116bfc9a (diff)
sync updates
Diffstat (limited to 'MediaBrowser.Api/Library/LibraryService.cs')
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs81
1 files changed, 41 insertions, 40 deletions
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index bac6f6a39..f147234fe 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -392,52 +392,43 @@ namespace MediaBrowser.Api.Library
/// <returns>System.Object.</returns>
public object Get(GetItemCounts request)
{
- var items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager)
- .Where(i => i.LocationType != LocationType.Virtual)
- .ToList();
-
- var filteredItems = request.UserId.HasValue ? FilterItems(items, request, request.UserId.Value).ToList() : items;
-
- var albums = filteredItems.OfType<MusicAlbum>().ToList();
- var episodes = filteredItems.OfType<Episode>().ToList();
- var games = filteredItems.OfType<Game>().ToList();
- var movies = filteredItems.OfType<Movie>().ToList();
- var musicVideos = filteredItems.OfType<MusicVideo>().ToList();
- var boxsets = filteredItems.OfType<BoxSet>().ToList();
- var books = filteredItems.OfType<Book>().ToList();
- var songs = filteredItems.OfType<Audio>().ToList();
- var series = filteredItems.OfType<Series>().ToList();
+ var filteredItems = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, null, i => i.LocationType != LocationType.Virtual && FilterItem(i, request, request.UserId));
var counts = new ItemCounts
{
- AlbumCount = albums.Count,
- EpisodeCount = episodes.Count,
- GameCount = games.Count,
- GameSystemCount = filteredItems.OfType<GameSystem>().Count(),
- MovieCount = movies.Count,
- SeriesCount = series.Count,
- SongCount = songs.Count,
- MusicVideoCount = musicVideos.Count,
- BoxSetCount = boxsets.Count,
- BookCount = books.Count,
-
- UniqueTypes = items.Select(i => i.GetClientTypeName()).Distinct().ToList()
+ AlbumCount = filteredItems.Count(i => i is MusicAlbum),
+ EpisodeCount = filteredItems.Count(i => i is Episode),
+ GameCount = filteredItems.Count(i => i is Game),
+ GameSystemCount = filteredItems.Count(i => i is GameSystem),
+ MovieCount = filteredItems.Count(i => i is Movie),
+ SeriesCount = filteredItems.Count(i => i is Series),
+ SongCount = filteredItems.Count(i => i is Audio),
+ MusicVideoCount = filteredItems.Count(i => i is MusicVideo),
+ BoxSetCount = filteredItems.Count(i => i is BoxSet),
+ BookCount = filteredItems.Count(i => i is Book),
+
+ UniqueTypes = filteredItems.Select(i => i.GetClientTypeName()).Distinct().ToList()
};
return ToOptimizedSerializedResultUsingCache(counts);
}
- private IEnumerable<T> FilterItems<T>(IEnumerable<T> items, GetItemCounts request, Guid userId)
- where T : BaseItem
+ private bool FilterItem(BaseItem item, GetItemCounts request, Guid? userId)
{
- if (request.IsFavorite.HasValue)
+ if (userId.HasValue)
{
- var val = request.IsFavorite.Value;
+ if (request.IsFavorite.HasValue)
+ {
+ var val = request.IsFavorite.Value;
- items = items.Where(i => _userDataManager.GetUserData(userId, i.GetUserDataKey()).IsFavorite == val);
+ if (_userDataManager.GetUserData(userId.Value, item.GetUserDataKey()).IsFavorite != val)
+ {
+ return false;
+ }
+ }
}
- return items;
+ return true;
}
/// <summary>
@@ -711,13 +702,24 @@ namespace MediaBrowser.Api.Library
public object Get(GetYearIndex request)
{
- IEnumerable<BaseItem> items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager);
+ var includeTypes = string.IsNullOrWhiteSpace(request.IncludeItemTypes)
+ ? new string[] { }
+ : request.IncludeItemTypes.Split(',');
- if (!string.IsNullOrEmpty(request.IncludeItemTypes))
+ Func<BaseItem, bool> filter = i =>
{
- var vals = request.IncludeItemTypes.Split(',');
- items = items.Where(f => vals.Contains(f.GetType().Name, StringComparer.OrdinalIgnoreCase));
- }
+ if (includeTypes.Length > 0)
+ {
+ if (!includeTypes.Contains(i.GetType().Name, StringComparer.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ IEnumerable<BaseItem> items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, null, filter);
var lookup = items
.ToLookup(i => i.ProductionYear ?? -1)
@@ -747,8 +749,7 @@ namespace MediaBrowser.Api.Library
var dtos = GetSoundtrackSongIds(item, inheritFromParent)
.Select(_libraryManager.GetItemById)
.OfType<MusicAlbum>()
- .SelectMany(i => i.RecursiveChildren)
- .OfType<Audio>()
+ .SelectMany(i => i.GetRecursiveChildren(a => a is Audio))
.OrderBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item));