public static IQueryable <T> Sort <T>(this IQueryable <T> query, PaginatorQuery paginatorQuery)
 {
     if (!string.IsNullOrWhiteSpace(paginatorQuery.SortBy) && paginatorQuery.SortBy != "rating")
     {
         query = query.OrderBy(paginatorQuery.SortBy + " " + paginatorQuery.SortDirection);
     }
     return(query);
 }
Пример #2
0
 public static List <Comment> SortByRating(this List <Comment> query, PaginatorQuery paginatorQuery)
 {
     if (!string.IsNullOrWhiteSpace(paginatorQuery.SortBy))
     {
         if (paginatorQuery.SortDirection == "asc")
         {
             query = query.OrderBy(c => c.Rating).ToList();
         }
         else
         {
             query = query.OrderByDescending(c => c.Rating).ToList();
         }
     }
     return(query);
 }
Пример #3
0
 public static List <Article> SortByRating(this List <Article> query, PaginatorQuery paginatorQuery)
 {
     if (!string.IsNullOrWhiteSpace(paginatorQuery.SortBy) && paginatorQuery.SortBy == "rating")
     {
         if (paginatorQuery.SortDirection == "asc")
         {
             query = query.OrderBy(a => a.Rating).ToList();
         }
         else
         {
             query = query.OrderByDescending(a => a.Rating).ToList();
         }
     }
     return(query);
 }
Пример #4
0
        public virtual async Task <PaginatorAnswer <TDto> > GetPage <TDto>(PaginatorQuery paginatorQuery, params Expression <Func <TEntity, object> >[] includeProperties) where TDto : class
        {
            IQueryable <TEntity> query = _context.Set <TEntity>();

            query = query.ApplyFilters(paginatorQuery.Filters);

            var total = await query.CountAsync();

            query = query.Sort(paginatorQuery);

            query = query.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(await query.ToArrayAsync());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #5
0
        public async Task <PaginatorAnswer <TDto> > GetPage <TDto>(PaginatorQuery paginatorQuery, params Expression <Func <User, object> >[] includeProperties) where TDto : class
        {
            IQueryable <User> query = IncludeProperties(includeProperties);

            if (includeProperties == null)
            {
                query = _context.Users.Include(u => u.Writer).ThenInclude(w => w.Articles).Include(u => u.Reviewer).ThenInclude(r => r.Comments);
            }

            var total = await query.CountAsync();

            query = query.Sort(paginatorQuery);

            query = query.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(await query.ToArrayAsync());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #6
0
        public async override Task <PaginatorAnswer <TDto> > GetPage <TDto>(PaginatorQuery paginatorQuery, params Expression <Func <Article, object> >[] includeProperties) where TDto : class
        {
            IQueryable <Article> query = IncludeProperties(includeProperties);

            query = query.ApplyFilters(paginatorQuery.Filters);

            if (!string.IsNullOrWhiteSpace(paginatorQuery.SearchString))
            {
                query = query.Where(a => a.Title.Contains(paginatorQuery.SearchString));
            }

            query = query.Sort(paginatorQuery);

            var list = await query.ToListAsync();

            list = list.TagsMatch(paginatorQuery.Filters);

            list = list.RatingFilter(paginatorQuery.Filters);


            if (paginatorQuery.SortBy == "rating")
            {
                list = list.SortByRating(paginatorQuery);
            }

            var total = list.Count();

            list = list.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(list.ToArray());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #7
0
 public async Task <ActionResult <PaginatorAnswer <CommentDto> > > GetUserCommentsPage([FromRoute] long userId, [FromBody] PaginatorQuery query)
 {
     return(await _commentService.GetUserCommentsPage(userId, query));
 }
 public async Task <ActionResult <PaginatorAnswer <ArticlePreviewDto> > > GetArticlesByUserId([FromRoute] long id, [FromBody] PaginatorQuery paginatorQuery)
 {
     return(await _articleService.GetUserArticlesPage(id, paginatorQuery));
 }
 public async Task <ActionResult <PaginatorAnswer <ArticlePreviewDto> > > GetArticlesPreviews([FromBody] PaginatorQuery queryDto)
 {
     return(await _articleService.GetArticlesPage(queryDto));
 }
Пример #10
0
 public async Task <ActionResult <PaginatorAnswer <UserRowDto> > > GetUserRowsPage([FromBody] PaginatorQuery query)
 {
     return(Ok(await _userService.GetPage(query)));
 }
Пример #11
0
        public async Task <PaginatorAnswer <TDto> > GetUserArticlesPage <TDto>(long userId, PaginatorQuery paginatorQuery, params Expression <Func <Article, object> >[] includeProperties)
        {
            IQueryable <Article> query = IncludeProperties(includeProperties);

            query = query.Where(a => a.Writer.UserId == userId);

            var total = await query.CountAsync();

            query = query.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(await query.ToArrayAsync());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #12
0
        public async Task <PaginatorAnswer <TDto> > GetArticlesCommentsPage <TDto>(long articleId, PaginatorQuery paginatorQuery, params Expression <Func <Comment, object> >[] includeProperties) where TDto : class
        {
            IQueryable <Comment> query = IncludeProperties(includeProperties);

            query = query.Where(c => c.ArticleId == articleId);

            var total = await query.CountAsync();

            query = query.Sort(paginatorQuery);

            var list = await query.ToListAsync();

            if (paginatorQuery.SortBy == "rating")
            {
                list = list.SortByRating(paginatorQuery);
            }

            list = list.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(list.ToArray());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #13
0
        public async Task <PaginatorAnswer <TDto> > GetUserCommentsPage <TDto>(long userId, PaginatorQuery paginatorQuery, params Expression <Func <Comment, object> >[] includeProperties) where TDto : class
        {
            IQueryable <Comment> query = IncludeProperties(includeProperties);

            query = query.Where(c => c.Reviewer.UserId == userId);

            var total = await query.CountAsync();

            query = query.GetPage(paginatorQuery.Page, paginatorQuery.PageSize);

            var result = _mapper.Map <TDto[]>(await query.ToArrayAsync());

            return(new PaginatorAnswer <TDto>
            {
                Total = total,
                Items = result
            });
        }
Пример #14
0
 public async Task <PaginatorAnswer <CommentDto> > GetUserCommentsPage(long userId, PaginatorQuery paginatorQuery)
 {
     return(await _repository.GetUserCommentsPage <CommentDto>(userId, paginatorQuery, c => c.Reviewer, c => c.Reviewer.User, c => c.UserCommentMarks));
 }
Пример #15
0
 public async Task <PaginatorAnswer <ArticlePreviewDto> > GetUserArticlesPage(long userId, PaginatorQuery paginatorQuery)
 {
     return(await _repository.GetUserArticlesPage <ArticlePreviewDto>(userId, paginatorQuery, a => a.Topic, a => a.Writer, a => a.Writer.User, a => a.UserArticleMarks));
 }
Пример #16
0
 public async Task <PaginatorAnswer <UserRowDto> > GetPage(PaginatorQuery paginatorQuery)
 {
     return(await _repository.GetPage <UserRowDto>(paginatorQuery, u => u.Reviewer, u => u.Reviewer.Comments, u => u.UserArticleMarks, u => u.Writer, u => u.Writer.Articles, u => u.UserCommentMarks));
 }