diff --git a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs index bb89e1a8c..cdf3492bd 100644 Binary files a/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs and b/src/NzbDrone.Core.Test/TvTests/RefreshEpisodeServiceFixture.cs differ diff --git a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs index f8436dc24..e60658104 100644 --- a/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs +++ b/src/NzbDrone.Core/Tv/RefreshEpisodeService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Windows.Forms.VisualStyles; using NLog; using NzbDrone.Common; using NzbDrone.Core.Messaging.Events; @@ -79,6 +80,7 @@ public void RefreshEpisodeInfo(Series series, IEnumerable remoteEpisode allEpisodes.AddRange(updateList); AdjustMultiEpisodeAirTime(series, allEpisodes); + SetAbsoluteEpisodeNumber(allEpisodes); _episodeService.DeleteMany(existingEpisodes); _episodeService.UpdateMany(updateList); @@ -132,12 +134,24 @@ private static void AdjustMultiEpisodeAirTime(Series series, IEnumerable e.SeasonNumber).ThenBy(e => e.EpisodeNumber)) + foreach (var episode in group.OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber)) { episode.AirDateUtc = episode.AirDateUtc.Value.AddMinutes(series.Runtime * episodeCount); episodeCount++; } } } + + private static void SetAbsoluteEpisodeNumber(IEnumerable allEpisodes) + { + var episodes = allEpisodes.Where(e => e.SeasonNumber > 0 && e.EpisodeNumber > 0) + .OrderBy(e => e.SeasonNumber).ThenBy(e => e.EpisodeNumber) + .ToList(); + + for (int i = 0; i < episodes.Count(); i++) + { + episodes[i].AbsoluteEpisodeNumber = i + 1; + } + } } } \ No newline at end of file