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); }
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); }
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); }
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 }); }
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 }); }
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 }); }
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)); }
public async Task <ActionResult <PaginatorAnswer <UserRowDto> > > GetUserRowsPage([FromBody] PaginatorQuery query) { return(Ok(await _userService.GetPage(query))); }
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 }); }
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 }); }
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 }); }
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)); }
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)); }
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)); }