Esempio n. 1
0
        public ActionResult Index(RentalFilters rentalFilters)
        {
            var         rentals     = FilterRentals(rentalFilters);
            RentalsList rentalsList = new RentalsList
            {
                Rentals = rentals,
                Filters = rentalFilters
            };

            return(View(rentalsList));
        }
Esempio n. 2
0
        // filteration using linq
        private IMongoQueryable <Rental> FilterRentalsLINQ(RentalFilters filters)
        {
            var rentals = context.Rentals.AsQueryable();

            if (filters.MinimumRoom.HasValue)
            {
                rentals = rentals
                          .Where(r => r.NumberOfRooms >= filters.MinimumRoom);
            }

            if (filters.PriceLimit.HasValue)
            {
                rentals = rentals
                          .Where(r => r.Price <= filters.PriceLimit);
            }

            return(rentals);
        }
Esempio n. 3
0
        // filteration method to filter rentals
        private List <Rental> FilterRentals(RentalFilters rentalFilters)
        {
            if (rentalFilters.PriceLimit.HasValue && rentalFilters.MinimumRoom.HasValue)
            {
                var filter = Builders <Rental> .Filter.Where(u => u.NumberOfRooms > rentalFilters.MinimumRoom && u.Price <= rentalFilters.PriceLimit);

                return(context.Rentals.Find(filter).SortBy(u => u.Price).ToList());
            }

            if (rentalFilters.MinimumRoom.HasValue)
            {
                return(context.Rentals.AsQueryable().Where(u => u.NumberOfRooms >= rentalFilters.MinimumRoom).OrderBy(u => u.NumberOfRooms).ToList());
            }
            if (rentalFilters.PriceLimit.HasValue)
            {
                var filter = Builders <Rental> .Filter.Lte(s => s.Price, rentalFilters.PriceLimit);

                return(context.Rentals.Find(filter).SortBy(u => u.Price).ToList());
            }
            return(context.Rentals.Find(FilterDefinition <Rental> .Empty).SortBy(u => u.Price).ToList());
        }
Esempio n. 4
0
        public ObjectResponse <List <RentalDTO> > GetRentals(RentalFilters rentalFilters)
        {
            try
            {
                var response = _unitOfWork.RentalsRepository.GetAll().Include(x => x.copy).Include(x => x.copy.movy).Include(y => y.client);
                if (rentalFilters.ClientId.HasValue)
                {
                    response = response.Where(x => x.client_id == rentalFilters.ClientId.Value);
                }

                if (rentalFilters.RentalDateFrom.HasValue)
                {
                    var datefrom = rentalFilters.RentalDateFrom.Value.Date;
                    response = response.Where(x => x.date_of_rental.Value.CompareTo(datefrom) >= 0);
                }

                if (rentalFilters.RentalDateTo.HasValue)
                {
                    var dateTo = rentalFilters.RentalDateTo.Value.Date.AddDays(1);
                    response = response.Where(x => x.date_of_rental.Value.CompareTo(dateTo) < 0);
                }

                if (rentalFilters.DaysOverDue > 0)
                {
                    response = response.Where(x => DbFunctions.DiffDays(x.date_of_rental.Value, DateTime.Now) >= rentalFilters.DaysOverDue && !x.date_of_return.HasValue);
                }

                return(new ObjectResponse <List <RentalDTO> > {
                    Success = true, Data = response.ToList()?.Select(x => RentalDTO.Create(x))?.ToList()
                });
            }
            catch (Exception ex)
            {
                return(new ObjectResponse <List <RentalDTO> > {
                    Success = false, Error = ex.GetBaseException().Message, Info = DB_GET_ERROR
                });
            }
        }
Esempio n. 5
0
        public async Task <ActionResult> IndexProjection(RentalFilters filters)
        {
            var rentals = await FilterRentalsLINQ(filters)
                          .Select(r => new RentalViewModel
            {
                Id            = r.Id,
                Address       = r.Address,
                Description   = r.Description,
                NumberOfRooms = r.NumberOfRooms,
                Price         = r.Price
            })
                          .OrderBy(r => r.Price)
                          .ThenByDescending(r => r.NumberOfRooms)
                          .ToListAsync();

            var model = new RentalsList
            {
                RentalsVM = rentals,
                Filters   = filters
            };

            return(View("Index", model));
        }