Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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()
            });
        }