public async Task <ActionResult <List <Adventure> > > Filter(AdventureFilterDTO adventureFilterDTO) { var adventuresQueryable = context.Adventures.AsQueryable(); if (adventureFilterDTO.GenreID != 0) { adventuresQueryable = adventuresQueryable .Where(x => x.AdventureGenres.Select(y => y.GenreID) .Contains(adventureFilterDTO.GenreID)); } await HttpContext.InsertPaginationParametersInResponse(adventuresQueryable, adventureFilterDTO.NumPerPage); var adventures = await adventuresQueryable.Paginate(adventureFilterDTO.Pagination).ToListAsync(); return(adventures); }
public async Task <PaginatedResponse <List <Adventure> > > GetFilteredAdventures(AdventureFilterDTO adventureFilterDTO) { var httpResponse = await httpService.Post <AdventureFilterDTO, List <Adventure> >($"{url}/filter", adventureFilterDTO); var numPages = int.Parse(httpResponse.HttpResponseMessage.Headers.GetValues("numPages").FirstOrDefault()); var paginatedResponse = new PaginatedResponse <List <Adventure> >() { Response = httpResponse.Response, NumPages = numPages }; return(paginatedResponse); }