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)); }
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) )); }
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) )); }
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); }