コード例 #1
0
        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));
        }
コード例 #2
0
        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,
            });
        }
コード例 #3
0
ファイル: QueryUtil.cs プロジェクト: karkn/MochaRefs
        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);
        }