private int CompareTitleOrYears(MovieSeriesListItem left, ListItem right) { int result = this.titleComparer.Compare( left.MovieSeries.GetListTitle()?.Name ?? String.Empty, right.Title); if (result != 0) { return(result); } result = left.StartYearToCompare.CompareTo(right.StartYearToCompare); return(result != 0 ? result : left.EndYearToCompare.CompareTo(right.EndYearToCompare)); }
private int Compare(MovieSeriesListItem left, MovieSeriesListItem right) { int result; if (left.MovieSeries.Id == right.MovieSeries.Id) { result = 0; } else if (left.MovieSeries.IsDescendantOf(right.MovieSeries)) { result = 1; } else if (right.MovieSeries.IsDescendantOf(left.MovieSeries)) { result = -1; } else if (left.MovieSeries.GetRootSeries().Id == right.MovieSeries.GetRootSeries().Id) { var(ancestor1, ancestor2) = left.MovieSeries.GetDistinctAncestors(right.MovieSeries); result = ancestor1.Entry?.SequenceNumber.CompareTo(ancestor2.Entry?.SequenceNumber) ?? 0; } else if (left.MovieSeries.Entry == null && right.MovieSeries.Entry == null) { result = this.titleComparer.Compare( left.MovieSeries.GetListTitle()?.Name ?? String.Empty, right.MovieSeries.GetListTitle()?.Name ?? String.Empty); if (result == 0) { result = left.MovieSeries.GetStartYear().CompareTo(right.MovieSeries.GetStartYear()); if (result == 0) { result = left.MovieSeries.GetEndYear().CompareTo(right.MovieSeries.GetEndYear()); } } } else { return(this.Compare( new MovieSeriesListItem(left.MovieSeries.GetRootSeries()), new MovieSeriesListItem(right.MovieSeries.GetRootSeries()))); } return(result); }
#pragma warning restore 8509 private int CompareEntries(MovieSeriesListItem left, ListItem right, MovieSeriesEntry?entry) { if (entry == null) { return(this.CompareTitleOrYears(new MovieSeriesListItem(left.MovieSeries.GetRootSeries()), right)); } if (left.MovieSeries.Id == entry.ParentSeriesId) { return(-1); } if (left.MovieSeries.IsStrictDescendantOf(entry.ParentSeries)) { return(left.MovieSeries.GetAllAncestors() .Where(a => a.Entry != null) .First(ms => ms.Entry !.ParentSeriesId == entry.ParentSeriesId) .Entry ! .SequenceNumber .CompareTo(entry.SequenceNumber)); } return(this.Compare(left, new MovieSeriesListItem(entry.ParentSeries))); }
private int Compare(MovieSeriesListItem left, SeriesListItem right) => this.CompareEntries(left, right, right.Series.Entry);
private int Compare(SeriesListItem left, MovieSeriesListItem right) => this.Compare(right, left) * -1;