public ActionResult FavoriteSongsPaged(int id, int? page, SongVoteRating? rating = null, SongSortRule sort = SongSortRule.Name, bool groupByRating = true) { const int songsPerPage = 50; var pageIndex = (page - 1) ?? 0; var r = rating ?? SongVoteRating.Nothing; var queryParams = new RatedSongQueryParams(id, PagingProperties.CreateFromPage(pageIndex, songsPerPage, true)) { FilterByRating = r, SortRule = sort, GroupByRating = groupByRating }; var result = Service.GetFavoriteSongs(queryParams); var data = new PagingData<FavoriteSongForUserContract>(result.Items.ToPagedList(pageIndex, songsPerPage, result.TotalCount), id, "FavoriteSongs", "ui-tabs-3"); data.RouteValues = new RouteValueDictionary(new { action = "FavoriteSongs", id, rating, sort, groupByRating }); return PartialView("FavoriteSongsPaged", data); }
public PartialFindResult<RatedSongForUserForApiContract> GetRatedSongs( int userId, string query = "", string tag = null, int? artistId = null, bool childVoicebanks = false, SongVoteRating? rating = null, int? songListId = null, bool groupByRating = true, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, SongSortRule? sort = null, NameMatchMode nameMatchMode = NameMatchMode.Auto, SongOptionalFields fields = SongOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { maxResults = Math.Min(maxResults, absoluteMax); query = FindHelpers.GetMatchModeAndQueryForSearch(query, ref nameMatchMode); var queryParams = new RatedSongQueryParams(userId, new PagingProperties(start, maxResults, getTotalCount)) { Query = query, NameMatchMode = nameMatchMode, SortRule = sort ?? SongSortRule.Name, ArtistId = artistId ?? 0, ChildVoicebanks = childVoicebanks, FilterByRating = rating ?? SongVoteRating.Nothing, GroupByRating = groupByRating, SonglistId = songListId ?? 0, Tag = tag }; var songs = queries.GetRatedSongs(queryParams, ratedSong => new RatedSongForUserForApiContract(ratedSong, lang, fields)); return songs; }