aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/LibraryService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-20 21:03:33 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-20 21:03:33 -0400
commita3a658e82079ac8e56193ce4d2047a547e0289c9 (patch)
tree4e3cd63d3386e478d8820c224b4d04239ad127e9 /MediaBrowser.Api/LibraryService.cs
parent2456a66e854a09e2db9fcad1625d8782597cb02e (diff)
added more info to user library counts
Diffstat (limited to 'MediaBrowser.Api/LibraryService.cs')
-rw-r--r--MediaBrowser.Api/LibraryService.cs56
1 files changed, 45 insertions, 11 deletions
diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index 16952dabd..89f082b63 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -204,6 +204,7 @@ namespace MediaBrowser.Api
private readonly ILibraryManager _libraryManager;
private readonly IUserManager _userManager;
+ private readonly IUserDataManager _userDataManager;
private readonly IDtoService _dtoService;
@@ -211,12 +212,13 @@ namespace MediaBrowser.Api
/// Initializes a new instance of the <see cref="LibraryService" /> class.
/// </summary>
public LibraryService(IItemRepository itemRepo, ILibraryManager libraryManager, IUserManager userManager,
- IDtoService dtoService)
+ IDtoService dtoService, IUserDataManager userDataManager)
{
_itemRepo = itemRepo;
_libraryManager = libraryManager;
_userManager = userManager;
_dtoService = dtoService;
+ _userDataManager = userDataManager;
}
public object Get(GetFile request)
@@ -332,27 +334,59 @@ namespace MediaBrowser.Api
{
var items = GetAllLibraryItems(request.UserId, _userManager, _libraryManager).ToList();
+ var albums = items.OfType<MusicAlbum>().ToList();
+ var episodes = items.OfType<Episode>().ToList();
+ var games = items.OfType<Game>().ToList();
+ var movies = items.OfType<Movie>().ToList();
+ var musicVideos = items.OfType<MusicVideo>().ToList();
+ var adultVideos = items.OfType<AdultVideo>().ToList();
+ var boxsets = items.OfType<BoxSet>().ToList();
+ var books = items.OfType<Book>().ToList();
+ var songs = items.OfType<Audio>().ToList();
+ var series = items.OfType<Series>().ToList();
+
+
+
var counts = new ItemCounts
{
- AlbumCount = items.OfType<MusicAlbum>().Count(),
- EpisodeCount = items.OfType<Episode>().Count(),
- GameCount = items.OfType<Game>().Count(),
+ AlbumCount = albums.Count,
+ EpisodeCount = episodes.Count,
+ GameCount = games.Count,
GameSystemCount = items.OfType<GameSystem>().Count(),
- MovieCount = items.OfType<Movie>().Count(),
- SeriesCount = items.OfType<Series>().Count(),
- SongCount = items.OfType<Audio>().Count(),
+ MovieCount = movies.Count,
+ SeriesCount = series.Count,
+ SongCount = songs.Count,
TrailerCount = items.OfType<Trailer>().Count(),
- MusicVideoCount = items.OfType<MusicVideo>().Count(),
- AdultVideoCount = items.OfType<AdultVideo>().Count(),
- BoxSetCount = items.OfType<BoxSet>().Count(),
- BookCount = items.OfType<Book>().Count(),
+ MusicVideoCount = musicVideos.Count,
+ AdultVideoCount = adultVideos.Count,
+ BoxSetCount = boxsets.Count,
+ BookCount = books.Count,
UniqueTypes = items.Select(i => i.GetType().Name).Distinct().ToList()
};
+ if (request.UserId.HasValue)
+ {
+ counts.FavoriteAlbumCount = FavoriteCount(albums, request.UserId.Value);
+ counts.FavoriteEpisodeCount = FavoriteCount(episodes, request.UserId.Value);
+ counts.FavoriteGameCount = FavoriteCount(games, request.UserId.Value);
+ counts.FavoriteMovieCount = FavoriteCount(movies, request.UserId.Value);
+ counts.FavoriteMusicVideoCount = FavoriteCount(musicVideos, request.UserId.Value);
+ counts.FavoriteAdultVideoCount = FavoriteCount(adultVideos, request.UserId.Value);
+ counts.FavoriteBoxSetCount = FavoriteCount(boxsets, request.UserId.Value);
+ counts.FavoriteBookCount = FavoriteCount(books, request.UserId.Value);
+ counts.FavoriteSongCount = FavoriteCount(songs, request.UserId.Value);
+ counts.FavoriteSeriesCount = FavoriteCount(series, request.UserId.Value);
+ }
+
return ToOptimizedResult(counts);
}
+ private int FavoriteCount(IEnumerable<BaseItem> items, Guid userId)
+ {
+ return items.Count(i => _userDataManager.GetUserData(userId, i.GetUserDataKey()).IsFavorite);
+ }
+
/// <summary>
/// Posts the specified request.
/// </summary>