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