コード例 #1
0
        public PaginatedResultList <ArticleDto> GetArticlesSummary(ArticlePaginationParameter pagination)
        {
            var articles   = _articleRepository.GetArticlesSummary(pagination);
            var articleDto = _mapper.Map <PaginatedResultList <ArticleDto> >(articles);

            return(articleDto);
        }
コード例 #2
0
ファイル: ArticleService.cs プロジェクト: fossabot/ancorazor
        public async Task <PaginationResponse <ArticleViewModel> > QueryByPageAsync(ArticlePaginationParameter parameters)
        {
            var predicate = PredicateBuilder.New <Article>(true);

            if (parameters.IsDraft.HasValue)
            {
                predicate.And(x => x.IsDraft == parameters.IsDraft);
            }
            var result = new PaginationResponse <ArticleViewModel> {
                PageIndex = parameters.PageIndex, PageSize = parameters.PageSize
            };

            // TODO: 这里用扩展方法封装一下
            var futureTotal = _context.Article.DeferredCount(predicate).FutureValue();
            var futureList  = _context.Article.Where(predicate)
                              .Select(x => new { x.Alias, x.CommentCount, x.Title, x.CreatedAt, x.Id, x.IsDraft, x.Digest, x.ViewCount, CategoryAlias = x.CategoryNavigation.Alias })
                              .OrderByDescending(x => x.CreatedAt)
                              .Skip(parameters.PageSize * parameters.PageIndex)
                              .Take(parameters.PageSize)
                              .Future();

            result.Total = await futureTotal.ValueAsync();

            result.List      = _mapper.Map <IEnumerable <ArticleViewModel> >(await futureList.ToListAsync());
            result.PageIndex = parameters.PageIndex;
            result.PageSize  = parameters.PageSize;

            foreach (var i in result.List)
            {
                i.Path = GetArticleRoutePath(i);
            }

            return(result);
        }
コード例 #3
0
 public async Task <IActionResult> GetPaged([FromQuery] ArticlePaginationParameter parameters)
 {
     if (HttpContext.User.Identity.IsAuthenticated)
     {
         parameters.IsDraft = null;
     }
     return(Ok(await _service.QueryByPageAsync(parameters)));
 }
コード例 #4
0
        public async Task <IActionResult> Index(int page = 0)
        {
            var articlePagination = new ArticlePaginationParameter
            {
                PageSize  = this.PageSize,
                PageIndex = page
            };

            var articles = _articleService.GetArticlesSummary(articlePagination);

            return(View(articles));
        }
コード例 #5
0
ファイル: ArticleRepository.cs プロジェクト: geeking/Jiavs
        public async Task <PaginatedResultList <Article> > GetArticlesSummaryAsync(ArticlePaginationParameter pagination)
        {
            var query = _dbSet.Where(x => x.Status.IsPublished && !x.Status.Deleted).AsQueryable();

            if (!string.IsNullOrWhiteSpace(pagination.Title))
            {
                query = query.Where(x => x.Content.Title.Contains(pagination.Title.Trim().ToLowerInvariant()));
            }
            //数据库中已发表文章总数
            var itemsCount = await query.Select(x => x.Id).CountAsync();

            query = query.Skip(pagination.GetSkipCount()).Take(pagination.PageSize);
            query = query.ApplySort(pagination.OrderBy, _mappingContainer.Resolve <ArticleDto, Article>());
            var articles = await query.Select(
                x => new Article(
                    new Domain.Models.ValueObjects.ArticleContent(x.Content.Title, x.Content.CoverUrl, x.Content.Summary, null, null),
                    x.Status,
                    x.Settings,
                    x.Author)
                ).AsNoTracking().ToListAsync();

            return(new PaginatedResultList <Article>(pagination, articles, itemsCount));
        }
コード例 #6
0
        public async Task <PaginatedResultList <ArticleDto> > GetArticlesSummaryAsync(ArticlePaginationParameter pagination)
        {
            var articles = await _articleRepository.GetArticlesSummaryAsync(pagination);

            var articleDto = _mapper.Map <PaginatedResultList <ArticleDto> >(articles);

            return(articleDto);
        }