Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
#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)));
        }
Exemplo n.º 4
0
 private int Compare(MovieSeriesListItem left, SeriesListItem right)
 => this.CompareEntries(left, right, right.Series.Entry);
Exemplo n.º 5
0
 private int Compare(SeriesListItem left, MovieSeriesListItem right)
 => this.Compare(right, left) * -1;