public async Task <ActionResult> NarrowFavoriteRefList( int pageIndex = 1, FavoriteRefListSortKind sort = FavoriteRefListSortKind.FavoriteCreatedDescending ) { var user = GetUser(); var result = await _favoriteHandler.GetFavoriteRefListsAsync( user.Id, new PageCondition(pageIndex - 1, WebConsts.RefListsPageSize), sort ); var vm = new FavoriteRefListPageViewModel() { PageIndex = result.PageIndex + 1, PageCount = result.PageCount, AllRefListCount = result.AllRefListCount, RefLists = Mapper.Map <ICollection <RefListViewModel> >(result.RefLists), }; return(JsonNet(vm, JsonRequestBehavior.AllowGet)); }
public async Task <PagedRefLists> GetFavoriteRefListsAsync( long ownerId, PageCondition pageCondition, FavoriteRefListSortKind sort ) { var query = _refsContext.Favorites. Include("RefList").Include("RefList.Author").Include("RefList.TagUses.Tag").Include("RefList.Statistics").AsNoTracking(). Where(f => f.OwnerId == ownerId && f.Kind == FavoriteKind.RefList); var count = await query.CountAsync(); query = QueryUtil.AppendQueryForFavoriteRefListSort(query, sort); query = query.Skip(pageCondition.PageIndex * pageCondition.PageSize); query = query.Take(pageCondition.PageSize); var storedFavs = await query.ToArrayAsync(); return(new PagedRefLists() { PageIndex = pageCondition.PageIndex, PageCount = IndexUtil.GetPageCount(count, pageCondition.PageSize), RefLists = storedFavs.Select(f => f.RefList), AllRefListCount = count, }); }
public static IQueryable <Favorite> AppendQueryForFavoriteRefListSort(IQueryable <Favorite> query, FavoriteRefListSortKind sort) { switch (sort) { case FavoriteRefListSortKind.RefListUpdatedDateDescending: query = query.OrderByDescending(f => f.RefList.UpdatedDate); break; case FavoriteRefListSortKind.RefListUpdatedDateAscending: query = query.OrderBy(f => f.RefList.UpdatedDate); break; case FavoriteRefListSortKind.RefListCreatedDateDescending: query = query.OrderByDescending(f => f.RefList.CreatedDate); break; case FavoriteRefListSortKind.RefListCreatedDateAscending: query = query.OrderBy(f => f.RefList.CreatedDate); break; case FavoriteRefListSortKind.RefListPublishedDateDescending: query = query.OrderByDescending(f => f.RefList.PublishedDate); break; case FavoriteRefListSortKind.FavoriteCountDescending: query = query. OrderByDescending(f => f.RefList.Statistics.FavoriteCount).ThenByDescending(l => l.CreatedDate); break; case FavoriteRefListSortKind.FavoriteCreatedDescending: query = query. OrderByDescending(f => f.CreatedDate); break; } return(query); }