Exemplo n.º 1
0
        public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesByTagAsync([FromQuery] ArticlePagingByTagDto pagingDto, long tagId)
        {
            var validation = pagingDto.Validation();

            if (validation.Fail)
            {
                return(ServiceResult <PagedDto <ArticleDto> > .Failed(validation.Msg));
            }
            return(await Task.FromResult(await _articleSvc.GetPagesByTagAsync(pagingDto, tagId)));
        }
Exemplo n.º 2
0
        public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesByTagAsync(ArticlePagingByTagDto pagingDto, long tagId)
        {
            pagingDto.Sort = pagingDto.Sort.IsNullOrEmpty() ? "create_time DESC" : pagingDto.Sort.Replace("-", " ");
            var articleIds = await _articleTagRepo.Select.Where(at => at.TagId == tagId).ToListAsync(at => at.ArticleId);

            var articles = await _articleRepo
                           .Select
                           .Include(a => a.Category)
                           .Include(a => a.User)
                           .IncludeMany(a => a.Tags)
                           .Where(a => !a.IsDeleted)
                           .Where(a => articleIds.Contains(a.Id))
                           .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))));
        }