public static IQueryable <Post> SetFilter( this IQueryable <Post> query, AdminPostIndexFilter filter) { if (!filter.LangKey.IsNullOrEmpty()) { query = query.Where(_ => _.Language.LangKey.ToLower() == filter.LangKey.ToLower()); } if (!filter.Title.IsNullOrEmpty()) { query = query.Where(_ => _.Title.ToLower() == filter.Title.ToLower()); } if (filter.CategoryId.HasValue) { query = query.Where(_ => _.CategoryId == filter.CategoryId.Value); } if (filter.Status.HasValue) { query = query.Where(_ => _.Status == filter.Status.Value); } if (filter.UserId.HasValue) { query = query.Where(_ => _.CreatorUserId == filter.UserId.Value || _.ModifierUserId == filter.UserId.Value); } return(query); }
public async Task <IActionResult> Index(string postType) { var filter = new AdminPostIndexFilter { PostTypeSlug = postType, PageIndex = 0, PageSize = 10, OrderKey = "ordernum" }; var result = await _postService.GetAdminIndexAsync(filter); var model = result.Adapt <AdminPostIndexViewModel>(); return(View(model)); }
public async Task <AdminPostIndexDto> GetAdminIndexAsync( AdminPostIndexFilter filter) { var postType = await _postTypeRepository .GetBySlugAsync(filter.PostTypeSlug); if (postType == null) { throw new PostTypeNotFoundException(); } var result = new AdminPostIndexDto { PostTypeSlug = postType.Slug, PostTypeTitle = postType.Title }; var query = _repository .Query() .Include(_ => _.Language) .Include(_ => _.CreatorUser) .Include(_ => _.ModifierUser) .Include(_ => _.Category) .Include(_ => _.PostTags) .ThenInclude(_ => _.Tag) .Where(_ => _.PostTypeId == postType.Id) .Where(_ => !_.IsComponent); result.DataSource.TotalCount = await query.CountAsync(); result.DataSource.PageIndex = filter.PageIndex; result.DataSource.PageSize = filter.PageSize; query = query.SetFilter(filter) .Skip(filter.StartIndex) .Take(filter.PageSize); result.DataSource.Items = await query .Select(_ => _.Adapt <AdminPostIndexItemDto>()) .ToListAsync(); return(await Task.FromResult(result)); }