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