From 404f2338f91ebea5a6f6434e73155b662f55317f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 29 Jun 2016 12:31:01 -0400 Subject: fix next up order --- .../TV/TVSeriesManager.cs | 58 ++++------------------ 1 file changed, 11 insertions(+), 47 deletions(-) (limited to 'MediaBrowser.Server.Implementations/TV') diff --git a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs index 82232ffae0..ba6534a7c3 100644 --- a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs +++ b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs @@ -107,7 +107,6 @@ namespace MediaBrowser.Server.Implementations.TV var currentUser = user; return series - .AsParallel() .Select(i => GetNextUp(i, currentUser)) // Include if an episode was found, and either the series is not unwatched or the specific series was requested .Where(i => i.Item1 != null && (!i.Item3 || !string.IsNullOrWhiteSpace(request.SeriesId))) @@ -124,67 +123,32 @@ namespace MediaBrowser.Server.Implementations.TV /// Task{Episode}. private Tuple GetNextUp(Series series, User user) { - var firstUnwatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) + var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) { AncestorWithPresentationUniqueKey = series.PresentationUniqueKey, IncludeItemTypes = new[] { typeof(Episode).Name }, SortBy = new[] { ItemSortBy.SortName }, - SortOrder = SortOrder.Ascending, + SortOrder = SortOrder.Descending, + IsPlayed = true, Limit = 1, - IsPlayed = false, IsVirtualItem = false, ParentIndexNumberNotEquals = 0 - }).Cast().FirstOrDefault(); - - // series is fully played - if (firstUnwatchedEpisode == null) - { - return new Tuple(null, DateTime.MinValue, true); - } + }).FirstOrDefault(); - var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) + var firstUnwatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user) { AncestorWithPresentationUniqueKey = series.PresentationUniqueKey, IncludeItemTypes = new[] { typeof(Episode).Name }, - SortBy = new[] { ItemSortBy.DatePlayed }, - SortOrder = SortOrder.Descending, + SortBy = new[] { ItemSortBy.SortName }, + SortOrder = SortOrder.Ascending, Limit = 1, + IsPlayed = false, IsVirtualItem = false, - ParentIndexNumberNotEquals = 0 + ParentIndexNumberNotEquals = 0, + MinSortName = lastWatchedEpisode == null ? null : lastWatchedEpisode.SortName - }).FirstOrDefault(); - - //// Get them in display order, then reverse - //var allEpisodes = series.GetEpisodes(user, false, false) - // .Where(i => !i.ParentIndexNumber.HasValue || i.ParentIndexNumber.Value != 0) - // .Reverse() - // .ToList(); - - //Episode lastWatched = null; - //var lastWatchedDate = DateTime.MinValue; - //Episode nextUp = null; - - //// Go back starting with the most recent episodes - //foreach (var episode in allEpisodes) - //{ - // var userData = _userDataManager.GetUserData(user, episode); - - // if (userData.Played) - // { - // if (lastWatched != null || nextUp == null) - // { - // break; - // } - - // lastWatched = episode; - // lastWatchedDate = userData.LastPlayedDate ?? DateTime.MinValue; - // } - // else - // { - // nextUp = episode; - // } - //} + }).Cast().FirstOrDefault(); if (lastWatchedEpisode != null) { -- cgit v1.2.3