public async Task <PagableResponse <DreamResponse> > Handle(GetAllQuery query, CancellationToken cancellationToken) { var dreams = _dbContext.Dreams.AsQueryable(); dreams = FilterMinAge(dreams, query.Filter); dreams = FilterMaxAge(dreams, query.Filter); dreams = FilterCategories(dreams, query.Filter); dreams = FilterSex(dreams, query.Filter); dreams = FilterSponsor(dreams, query.Filter); dreams = FilterProceed(dreams, query.Filter); return(await ToResponse(query, dreams, cancellationToken)); }
private async Task <PagableResponse <DreamResponse> > ToResponse(GetAllQuery query, IQueryable <Persistent.Dream> dreams, CancellationToken cancellationToken) { var count = await dreams.CountAsync(cancellationToken); var skip = (query.PagingOptions.Page - 1) * query.PagingOptions.PageSize; var response = await dreams.Skip(skip) .Take(query.PagingOptions.PageSize) .ProjectTo <DreamResponse>(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); return(new PagableResponse <DreamResponse> { AllItemsCount = count, Response = response, Page = query.PagingOptions.Page, PageSize = query.PagingOptions.PageSize, PagesCount = (int)Math.Ceiling(count / (decimal)query.PagingOptions.PageSize) }); }