aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs40
1 files changed, 18 insertions, 22 deletions
diff --git a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
index ec91dc1b71..6019d64b4b 100644
--- a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
+++ b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
@@ -111,24 +111,6 @@ namespace MediaBrowser.Server.Implementations.TV
.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)))
- //.OrderByDescending(i =>
- //{
- // var episode = i.Item1;
-
- // var seriesUserData = _userDataManager.GetUserData(user, episode.Series);
-
- // if (seriesUserData.IsFavorite)
- // {
- // return 2;
- // }
-
- // if (seriesUserData.Likes.HasValue)
- // {
- // return seriesUserData.Likes.Value ? 1 : -1;
- // }
-
- // return 0;
- //})
.OrderByDescending(i => i.Item2)
.ThenByDescending(i => i.Item1.PremiereDate ?? DateTime.MinValue)
.Select(i => i.Item1);
@@ -143,9 +125,8 @@ namespace MediaBrowser.Server.Implementations.TV
private Tuple<Episode, DateTime, bool> GetNextUp(Series series, User user)
{
// Get them in display order, then reverse
- var allEpisodes = series.GetSeasons(user, true, true)
- .Where(i => !i.IndexNumber.HasValue || i.IndexNumber.Value != 0)
- .SelectMany(i => i.GetEpisodes(user))
+ var allEpisodes = series.GetEpisodes(user, true, true)
+ .Where(i => !i.ParentIndexNumber.HasValue || i.ParentIndexNumber.Value != 0)
.Reverse()
.ToList();
@@ -155,6 +136,8 @@ namespace MediaBrowser.Server.Implementations.TV
var includeMissing = user.Configuration.DisplayMissingEpisodes;
+ var unplayedEpisodes = new List<Episode>();
+
// Go back starting with the most recent episodes
foreach (var episode in allEpisodes)
{
@@ -172,6 +155,8 @@ namespace MediaBrowser.Server.Implementations.TV
}
else
{
+ unplayedEpisodes.Add(episode);
+
if (!episode.IsVirtualUnaired && (includeMissing || !episode.IsMissingEpisode))
{
nextUp = episode;
@@ -184,7 +169,18 @@ namespace MediaBrowser.Server.Implementations.TV
return new Tuple<Episode, DateTime, bool>(nextUp, lastWatchedDate, false);
}
- var firstEpisode = allEpisodes.LastOrDefault(i => !i.IsVirtualUnaired && (includeMissing || !i.IsMissingEpisode) && !i.IsPlayed(user));
+ Episode firstEpisode = null;
+ // Find the first unplayed episode. Start from the back of the list since they're in reverse order
+ for (var i = unplayedEpisodes.Count - 1; i >= 0; i--)
+ {
+ var unplayedEpisode = unplayedEpisodes[i];
+
+ if (!unplayedEpisode.IsVirtualUnaired && (includeMissing || !unplayedEpisode.IsMissingEpisode))
+ {
+ firstEpisode = unplayedEpisode;
+ break;
+ }
+ }
// Return the first episode
return new Tuple<Episode, DateTime, bool>(firstEpisode, DateTime.MinValue, true);