예제 #1
0
        public static IQueryable <Artist> OrderBy(
            this IQueryable <Artist> criteria, ArtistSortRule sortRule, ContentLanguagePreference languagePreference)
        {
            switch (sortRule)
            {
            case ArtistSortRule.Name:
                return(FindHelpers.AddNameOrder(criteria, languagePreference));

            case ArtistSortRule.AdditionDate:
                return(criteria.OrderByDescending(a => a.CreateDate));

            case ArtistSortRule.AdditionDateAsc:
                return(criteria.OrderBy(a => a.CreateDate));

            case ArtistSortRule.ReleaseDate:
                return(OrderByReleaseDate(criteria, SortDirection.Descending));

            case ArtistSortRule.SongCount:
                return(criteria.OrderByDescending(a => a.AllSongs.Count(s => !s.Song.Deleted)));

            case ArtistSortRule.SongRating:
                return(criteria.OrderByDescending(a => a.AllSongs
                                                  .Where(s => !s.Song.Deleted)
                                                  .Sum(s => s.Song.RatingScore)));

            case ArtistSortRule.FollowerCount:
                return(criteria.OrderByDescending(a => a.Users.Count));
            }

            return(criteria);
        }
예제 #2
0
        public static IQueryable <Album> AddOrder(IQueryable <Album> criteria, AlbumSortRule sortRule, ContentLanguagePreference languagePreference)
        {
            switch (sortRule)
            {
            case AlbumSortRule.Name:
                return(FindHelpers.AddNameOrder(criteria, languagePreference));

            case AlbumSortRule.ReleaseDate:
                return(AddReleaseRestriction(criteria)
                       .OrderByDescending(a => a.OriginalRelease.ReleaseDate.Year)
                       .ThenByDescending(a => a.OriginalRelease.ReleaseDate.Month)
                       .ThenByDescending(a => a.OriginalRelease.ReleaseDate.Day));

            case AlbumSortRule.AdditionDate:
                return(criteria.OrderByDescending(a => a.CreateDate));

            case AlbumSortRule.RatingAverage:
                return(criteria.OrderByDescending(a => a.RatingAverageInt)
                       .ThenByDescending(a => a.RatingCount));

            case AlbumSortRule.NameThenReleaseDate:
                return(FindHelpers.AddNameOrder(criteria, languagePreference)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Year)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Month)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Day));
            }

            return(criteria);
        }
예제 #3
0
        private IQueryOver <Artist, Artist> AddOrder(IQueryOver <Artist, Artist> criteria, ArtistSortRule sortRule, ContentLanguagePreference languagePreference)
        {
            switch (sortRule)
            {
            case ArtistSortRule.Name:
                return(FindHelpers.AddNameOrder(criteria, languagePreference));

            case ArtistSortRule.AdditionDate:
                return(criteria.OrderBy(a => a.CreateDate).Desc);
            }

            return(criteria);
        }
예제 #4
0
        public static IQueryable <Album> OrderBy(
            this IQueryable <Album> query, EntrySortRule sortRule, ContentLanguagePreference languagePreference)
        {
            switch (sortRule)
            {
            case EntrySortRule.Name:
                return(FindHelpers.AddNameOrder(query, languagePreference));

            case EntrySortRule.AdditionDate:
                return(query.OrderByDescending(a => a.CreateDate));
            }

            return(query);
        }
예제 #5
0
        public static IQueryable <Album> OrderBy(this IQueryable <Album> criteria, AlbumSortRule sortRule, ContentLanguagePreference languagePreference)
        {
            switch (sortRule)
            {
            case AlbumSortRule.Name:
                return(FindHelpers.AddNameOrder(criteria, languagePreference));

            case AlbumSortRule.CollectionCount:
                return(criteria.OrderByDescending(a => a.UserCollections.Count));

            case AlbumSortRule.ReleaseDate:
                return(criteria.OrderByReleaseDate(SortDirection.Descending));

            case AlbumSortRule.ReleaseDateWithNulls:
                return(criteria.OrderByReleaseDate(SortDirection.Descending));

            case AlbumSortRule.AdditionDate:
                return(criteria.OrderByDescending(a => a.CreateDate));

            case AlbumSortRule.RatingAverage:
                return(criteria.OrderByDescending(a => a.RatingAverageInt)
                       .ThenByDescending(a => a.RatingCount));

            case AlbumSortRule.RatingTotal:
                return(criteria.OrderByDescending(a => a.RatingTotal)
                       .ThenByDescending(a => a.RatingAverageInt));

            case AlbumSortRule.NameThenReleaseDate:
                return(FindHelpers.AddNameOrder(criteria, languagePreference)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Year)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Month)
                       .ThenBy(a => a.OriginalRelease.ReleaseDate.Day));
            }

            return(criteria);
        }
예제 #6
0
 public static IOrderedQueryable <T> ThenByEntryName <T>(this IOrderedQueryable <T> criteria, ContentLanguagePreference languagePreference)
     where T : IEntryWithNames
 {
     return(FindHelpers.AddNameOrder(criteria, languagePreference));
 }