aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/TV
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-29 12:31:01 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-29 12:31:01 -0400
commit404f2338f91ebea5a6f6434e73155b662f55317f (patch)
tree2f78ab655dafb88f89613b687e9efe2c2cc2cc3f /MediaBrowser.Server.Implementations/TV
parent775fc940201df06af46772ec612d2a525daf572d (diff)
fix next up order
Diffstat (limited to 'MediaBrowser.Server.Implementations/TV')
-rw-r--r--MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs58
1 files changed, 11 insertions, 47 deletions
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
/// <returns>Task{Episode}.</returns>
private Tuple<Episode, DateTime, bool> 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<Episode>().FirstOrDefault();
-
- // series is fully played
- if (firstUnwatchedEpisode == null)
- {
- return new Tuple<Episode, DateTime, bool>(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<Episode>().FirstOrDefault();
if (lastWatchedEpisode != null)
{