diff options
Diffstat (limited to 'Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs')
| -rw-r--r-- | Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs index 2b0ab536f..964004ecc 100644 --- a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs +++ b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs @@ -11,6 +11,12 @@ namespace Emby.Server.Implementations.Sorting public class AiredEpisodeOrderComparer : IBaseItemComparer { /// <summary> + /// Gets the name. + /// </summary> + /// <value>The name.</value> + public string Name => ItemSortBy.AiredEpisodeOrder; + + /// <summary> /// Compares the specified x. /// </summary> /// <param name="x">The x.</param> @@ -18,32 +24,16 @@ namespace Emby.Server.Implementations.Sorting /// <returns>System.Int32.</returns> public int Compare(BaseItem? x, BaseItem? y) { - if (x == null) - { - throw new ArgumentNullException(nameof(x)); - } - - if (y == null) - { - throw new ArgumentNullException(nameof(y)); - } - - if (x.PremiereDate.HasValue && y.PremiereDate.HasValue) - { - var val = DateTime.Compare(x.PremiereDate.Value, y.PremiereDate.Value); + ArgumentNullException.ThrowIfNull(x); - if (val != 0) - { - // return val; - } - } + ArgumentNullException.ThrowIfNull(y); var episode1 = x as Episode; var episode2 = y as Episode; - if (episode1 == null) + if (episode1 is null) { - if (episode2 == null) + if (episode2 is null) { return 0; } @@ -51,7 +41,7 @@ namespace Emby.Server.Implementations.Sorting return 1; } - if (episode2 == null) + if (episode2 is null) { return -1; } @@ -156,14 +146,14 @@ namespace Emby.Server.Implementations.Sorting { var xValue = ((x.ParentIndexNumber ?? -1) * 1000) + (x.IndexNumber ?? -1); var yValue = ((y.ParentIndexNumber ?? -1) * 1000) + (y.IndexNumber ?? -1); + var comparisonResult = xValue.CompareTo(yValue); + // If equal, compare premiere dates + if (comparisonResult == 0 && x.PremiereDate.HasValue && y.PremiereDate.HasValue) + { + comparisonResult = DateTime.Compare(x.PremiereDate.Value, y.PremiereDate.Value); + } - return xValue.CompareTo(yValue); + return comparisonResult; } - - /// <summary> - /// Gets the name. - /// </summary> - /// <value>The name.</value> - public string Name => ItemSortBy.AiredEpisodeOrder; } } |
