public async Task <IPagedResult <PostOfUserDto> > PostsByUserIdAsync(int userId, IPageInfo paging, string column, OrderDirection direction, string search) { var query = new PostsByUserIdQuery(Dispatcher) { UserId = userId, Paging = paging, OrderByColumnName = column, OrderByDirection = direction, Search = search }; return(await query.ExecuteAsync()); }
public override async Task <IPagedResult <PostOfUserDto> > HandleAsync(PostsByUserIdQuery query, CancellationToken token) { var filteredPosts = Entities.Where(p => p.CreatorId == query.UserId); if (!string.IsNullOrEmpty(query.Search)) { filteredPosts = filteredPosts.Where(p => p.Title.ToLower().Contains(query.Search.ToLower()) || p.Content.ToLower().Contains(query.Search.ToLower())); } var posts = ProjectTo <PostOfUserDto>(filteredPosts.OrderBy(query.OrderByColumnName, query.OrderByDirection)) .Skip(query.Paging.CalculateSkip()) .Take(query.Paging.PageSize); return(new PagedResult <PostOfUserDto>(await posts.ToArrayAsync(token)) { TotalCount = await Entities.Where(p => p.CreatorId == query.UserId).CountAsync(), FilteredCount = await filteredPosts.CountAsync() }); }