Beispiel #1
0
        public async Task <ActionResult <List <Deal> > > Filter(FilterDealsDTO filterDealsDTO)
        {
            var dealsQueryable = context.Deals.AsQueryable();

            if (!string.IsNullOrWhiteSpace(filterDealsDTO.Title))
            {
                dealsQueryable = dealsQueryable
                                 .Where(x => x.Title.Contains(filterDealsDTO.Title));
            }

            if (filterDealsDTO.PopularDeals)
            {
                dealsQueryable = dealsQueryable.Where(x => x.IsPopular);
            }

            if (filterDealsDTO.DealCategoryId != 0)
            {
                dealsQueryable = dealsQueryable
                                 .Where(x => x.DealsCategories.Select(y => y.CategoryId)
                                        .Contains(filterDealsDTO.DealCategoryId));
            }

            await HttpContext.InsertPaginationParametersInResponse(dealsQueryable,
                                                                   filterDealsDTO.RecordsPerPage);

            var deals = await dealsQueryable.Paginate(filterDealsDTO.Pagination).ToListAsync();

            return(deals);
        }
        public async Task <PaginatedResponse <List <Deal> > > GetDealsFiltered(FilterDealsDTO filterDealsDTO)
        {
            var responseHTTP = await httpService.Post <FilterDealsDTO, List <Deal> >($"{url}/filter", filterDealsDTO);

            var totalAmountPages  = int.Parse(responseHTTP.HttpResponseMessage.Headers.GetValues("totalAmountPages").FirstOrDefault());
            var paginatedResponse = new PaginatedResponse <List <Deal> >()
            {
                Response         = responseHTTP.Response,
                TotalAmountPages = totalAmountPages
            };

            return(paginatedResponse);
        }