public async Task <PagedList <DAppOffer> > GetAllDAppOffers(GetDAppOfferModel getDAppOfferModel) { // Retrieve the collection as queryable var offers = _dAppOffers.AsQueryable().OrderBy(on => on.LiskPerMonth).AsQueryable(); // Apply filters if (getDAppOfferModel.MinReward != null) { offers = offers.Where(o => o.LiskPerMonth >= getDAppOfferModel.MinReward); } if (getDAppOfferModel.MaxReward != null) { offers = offers.Where(o => o.LiskPerMonth <= getDAppOfferModel.MaxReward); } if (!string.IsNullOrEmpty(getDAppOfferModel.SearchQuery)) { offers = offers.Where(o => o.Title.ToLower().Contains(getDAppOfferModel.SearchQuery.ToLower())); } if (!string.IsNullOrEmpty(getDAppOfferModel.RegionQuery)) { offers = offers.Where(o => o.Region.ToLower().Contains(getDAppOfferModel.RegionQuery.ToLower())); } return(await PagedList <DAppOffer> .ToPagedList(offers, getDAppOfferModel.PageNumber, getDAppOfferModel.PageSize)); }
public async Task <IActionResult> Get([FromQuery] GetDAppOfferModel getDAppOfferModel) { try { // gets offers that comply with the filters in the getOfferModel var offers = await _dAppService.GetOffers(getDAppOfferModel); // 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 <DAppOffer> > GetOffers(GetDAppOfferModel getDAppOfferModel) { return(await _dAppRepository.GetAllDAppOffers(getDAppOfferModel)); }