Exemple #1
0
        public RentalRequestPageViewModel GetRentalRequests(Int32 page, Int32 pageSize)
        {
            RentalRequestPageDto       announcements = _rentalRequestService.GetPageWithFilters(page, pageSize, HttpContext.Current.Request.QueryString);
            RentalRequestPageViewModel results       = _mapper.Map <RentalRequestPageViewModel>(announcements);

            return(results);
        }
Exemple #2
0
        public RentalRequestPageDto GetPageWithFilters(Int32 pageNumber, Int32 pageSize, NameValueCollection filteringParams)
        {
            Int32 maxCost, minCost, maxArea, minArea;

            try
            {
                maxCost = String.IsNullOrEmpty(filteringParams["maxCost"]) ? Int32.MaxValue : Int32.Parse(filteringParams["maxCost"]);
                minCost = String.IsNullOrEmpty(filteringParams["minCost"]) ? 0 : Int32.Parse(filteringParams["minCost"]);
                maxArea = String.IsNullOrEmpty(filteringParams["maxArea"]) ? Int32.MaxValue : Int32.Parse(filteringParams["maxArea"]);
                minArea = String.IsNullOrEmpty(filteringParams["minArea"]) ? 0 : Int32.Parse(filteringParams["minArea"]);
            }
            catch
            {
                throw new ArgumentException("Invalid filter parameter");
            }

            IQueryable <RentalRequest> requests = _repository.GetAll();

            requests = requests.Where(request =>
                                      (request.MaxPrice >= minCost && request.MaxPrice <= maxCost) &&
                                      (request.Area >= minArea && request.Area <= maxArea));

            int   skip         = (pageNumber - 1) * pageSize;
            Int32 requestCount = (int)Math.Ceiling(requests.Count() / (float)pageSize);

            requests = requests.OrderByDescending(g => g.Id).Skip(skip).Take(pageSize);


            List <RentalRequestDto> rentalRequestDtos = _mapper.Map <IEnumerable <RentalRequest>, List <RentalRequestDto> >(requests);

            RentalRequestPageDto rentalRequestPageDto = new RentalRequestPageDto
            {
                CurrentPage    = pageNumber,
                PageCount      = requestCount,
                RentalRequests = rentalRequestDtos
            };

            return(rentalRequestPageDto);
        }