コード例 #1
0
        public async Task <AdminCommentIndexDto> GetAdminIndexAsync(AdminCommentIndexFilter filter)
        {
            filter.CheckArgumentIsNull(nameof(filter));

            var query = _repository
                        .Query()
                        .Where(_ => _.Post.WebsiteId == _userContext.WebsiteId)
                        .SetFilter(filter);

            var result = new AdminCommentIndexDto();

            result.DataSource.TotalCount = await query.CountAsync();

            result.DataSource.PageIndex = filter.PageIndex;
            result.DataSource.PageSize  = filter.PageSize;

            query = query
                    .Skip(filter.StartIndex)
                    .Take(filter.PageSize);

            var comments = await query.ToListAsync();

            await setCommentsToViewed(comments);
            await setCommentsToRead(comments);

            result.DataSource.Items = comments
                                      .Select(_ => _.Adapt <AdminCommentIndexItemDto>())
                                      .ToList();

            return(await Task.FromResult(result));
        }
コード例 #2
0
        public async Task <IActionResult> Index(int page = 1)
        {
            var filter = new AdminCommentIndexFilter {
                PageIndex = page - 1,
                PageSize  = 10
            };
            var result = await _commentService.GetAdminIndexAsync(filter);

            var model = result.Adapt <AdminCommentIndexViewModel>();

            model.Filter.PageIndex = filter.PageIndex;
            model.Filter.PageSize  = filter.PageSize;

            return(await Task.FromResult(
                       View(model)
                       ));
        }
コード例 #3
0
        public async Task <IActionResult> Index(AdminCommentFilterViewModel model)
        {
            var filter = new AdminCommentIndexFilter {
                Email  = model.Email,
                Status = model.Status,
                Title  = model.Title
            };

            var result = await _commentService.GetAdminIndexAsync(filter);

            var resultModel = result.Adapt <AdminCommentIndexViewModel>();

            resultModel.DataSource.HasFilter = true;

            return(await Task.FromResult(
                       View(resultModel)
                       ));
        }
コード例 #4
0
ファイル: QueryFilter.cs プロジェクト: yeganetrn/behlog
        public static IQueryable <Comment> SetFilter(
            this IQueryable <Comment> query,
            AdminCommentIndexFilter filter)
        {
            filter.CheckArgumentIsNull(nameof(filter));

            if (!filter.Title.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Title.Contains(filter.Title));
            }

            if (!filter.Email.IsNullOrEmpty())
            {
                query = query.Where(_ => _.Email.Contains(filter.Email));
            }

            if (filter.Status.HasValue)
            {
                query = query.Where(_ => _.Status == filter.Status.Value);
            }

            return(query);
        }