Beispiel #1
0
        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));
 }