Exemplo n.º 1
0
        public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesAsync([FromQuery] ArticlePagingDto pagingDto)
        {
            var validation = pagingDto.Validation();

            if (validation.Fail)
            {
                return(ServiceResult <PagedDto <ArticleDto> > .Failed(validation.Msg));
            }
            return(await Task.FromResult(await _articleSvc.GetPagesAsync(pagingDto)));
        }
Exemplo n.º 2
0
        public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesAsync(ArticlePagingDto pagingDto)
        {
            pagingDto.Sort = pagingDto.Sort.IsNullOrEmpty() ? "create_time DESC" : pagingDto.Sort.Replace("-", " ");
            var articles = await _articleRepo
                           .Select
                           .Include(a => a.Category)
                           .Include(a => a.User)
                           .IncludeMany(a => a.Tags)
                           .Where(a => !a.IsDeleted)
                           .WhereIf(pagingDto.IsTop.HasValue, a => a.IsTop == pagingDto.IsTop)
                           .WhereIf(pagingDto.CategoryId > 0, a => a.CategoryId == pagingDto.CategoryId)
                           .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.Title), a => a.Title.Contains(pagingDto.Title))
                           .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.Author), a => a.Title.Contains(pagingDto.Author))
                           .WhereIf(pagingDto.CreateTimeStart != null, a => a.CreateTime <= pagingDto.CreateTimeStart && a.CreateTime <= pagingDto.CreateTimeEnd)
                           .OrderBy(pagingDto.Sort)
                           .ToPageListAsync(pagingDto, out long total);

            var dtos = articles.Select(a => Mapper.Map <ArticleDto>(a)).ToList();

            return(await Task.FromResult(ServiceResult <PagedDto <ArticleDto> > .Successed(new PagedDto <ArticleDto>(dtos, total))));
        }