public async Task <IActionResult> Get([FromQuery] GetDelegateOfferModel getDelegateOfferModel) { try { // gets offers that comply with the filters in the getOfferModel var offers = await _delegateService.GetOffers(getDelegateOfferModel); // make headerdata for the frontend var metadata = new { offers.TotalCount, offers.PageSize, offers.CurrentPage, offers.TotalPages, offers.HasNext, offers.HasPrevious }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(offers)); } catch (Exception ex) { return(BadRequest(new { message = ex.Message })); } }
public async Task <PagedList <DelegateOffer> > GetAllDelegateOffers(GetDelegateOfferModel getDelegateOfferModel) { // Retrieve the collection as queryable var offers = _delegateOffers.AsQueryable().OrderBy(on => on.LiskPerMonth).AsQueryable(); // Apply filters if (getDelegateOfferModel.MinPrice != null) { offers = offers.Where(o => o.LiskPerMonth >= getDelegateOfferModel.MinPrice); } if (getDelegateOfferModel.MaxPrice != null) { offers = offers.Where(o => o.LiskPerMonth <= getDelegateOfferModel.MaxPrice); } if (getDelegateOfferModel.MinMonth != null) { offers = offers.Where(o => o.AvailableForInMonths >= getDelegateOfferModel.MinMonth); } if (getDelegateOfferModel.MaxMonth != null) { offers = offers.Where(o => o.AvailableForInMonths <= getDelegateOfferModel.MaxMonth); } if (!string.IsNullOrEmpty(getDelegateOfferModel.SearchQuery)) { offers = offers.Where(o => o.Title.ToLower().Contains(getDelegateOfferModel.SearchQuery.ToLower())); } if (!string.IsNullOrEmpty(getDelegateOfferModel.RegionQuery)) { offers = offers.Where(o => o.Region.ToLower().Contains(getDelegateOfferModel.RegionQuery.ToLower())); } return(await PagedList <DelegateOffer> .ToPagedList(offers, getDelegateOfferModel.PageNumber, getDelegateOfferModel.PageSize)); }
public async Task <PagedList <DelegateOffer> > GetOffers(GetDelegateOfferModel getDelegateOfferModel) { return(await _delegateRepository.GetAllDelegateOffers(getDelegateOfferModel)); }