From d7ad1331f17a0985cf0a83d1a155caef68a733d0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 18 Dec 2016 00:47:12 -0500 Subject: [PATCH] fix merge conflict --- .../Entities/UserViewBuilder.cs | 74 ++++++++++++++----- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index bc806e76e2..d5781d21e2 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -566,18 +566,35 @@ namespace MediaBrowser.Controller.Entities private async Task> GetMovieGenres(Folder parent, User user, InternalItemsQuery query) { - var result = _libraryManager.GetGenres(new InternalItemsQuery(user) + var tasks = parent.QueryRecursive(new InternalItemsQuery(user) { - AncestorIds = new[] { parent.Id.ToString("N") }, - StartIndex = query.StartIndex, - Limit = query.Limit - }); + IncludeItemTypes = new[] { typeof(Movie).Name }, + Recursive = true, + EnableTotalRecordCount = false - return new QueryResult - { - TotalRecordCount = result.TotalRecordCount, - Items = result.Items.Select(i => i.Item1).ToArray() - }; + }).Items + .SelectMany(i => i.Genres) + .DistinctNames() + .Select(i => + { + try + { + return _libraryManager.GetGenre(i); + } + catch + { + // Full exception logged at lower levels + _logger.Error("Error getting genre"); + return null; + } + + }) + .Where(i => i != null) + .Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent)); + + var genres = await Task.WhenAll(tasks).ConfigureAwait(false); + + return GetResult(genres, parent, query); } private async Task> GetMovieGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query) @@ -692,18 +709,35 @@ namespace MediaBrowser.Controller.Entities private async Task> GetTvGenres(Folder parent, User user, InternalItemsQuery query) { - var result = _libraryManager.GetGenres(new InternalItemsQuery(user) + var tasks = parent.QueryRecursive(new InternalItemsQuery(user) { - AncestorIds = new[] { parent.Id.ToString("N") }, - StartIndex = query.StartIndex, - Limit = query.Limit - }); + IncludeItemTypes = new[] { typeof(Series).Name }, + Recursive = true, + EnableTotalRecordCount = false - return new QueryResult - { - TotalRecordCount = result.TotalRecordCount, - Items = result.Items.Select(i => i.Item1).ToArray() - }; + }).Items + .SelectMany(i => i.Genres) + .DistinctNames() + .Select(i => + { + try + { + return _libraryManager.GetGenre(i); + } + catch + { + // Full exception logged at lower levels + _logger.Error("Error getting genre"); + return null; + } + + }) + .Where(i => i != null) + .Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent)); + + var genres = await Task.WhenAll(tasks).ConfigureAwait(false); + + return GetResult(genres, parent, query); } private QueryResult GetTvGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query)