Ejemplo n.º 1
0
        public virtual ActionResult ClientDetails(DateTime pickupDate, DateTime returnDate, int carGroupId)
        {
            var client   = new Client();
            var carGroup = context.CarGroups.Include(c => c.CarGroupDetails).First(c => c.Id == carGroupId);

            var viewModel = new RentClientDetailsViewModel()
            {
                Client = client,
                RentDetailsViewModel = new RentDetailsViewModel
                {
                    PickupDate = pickupDate,
                    ReturnDate = returnDate,
                    CarGroupId = carGroupId,
                    CarGroup   = carGroup,
                    Price      = PriceHelper.Calculate(pickupDate, returnDate, carGroup.DayPrice),
                },
            };

            return(View(MVC.Rentals.Views.ClientDetails, viewModel));
        }
Ejemplo n.º 2
0
        public virtual ActionResult New(RentClientDetailsViewModel viewModel)
        {
            var carGroupId = viewModel.RentDetailsViewModel.CarGroupId;
            var pickupDate = viewModel.RentDetailsViewModel.PickupDate;
            var returnDate = viewModel.RentDetailsViewModel.ReturnDate;
            var client     = viewModel.Client;

            var carsFromGroup = context.Cars.Where(c => c.CarGroupId == carGroupId);

            var rentalsFromGroup = context.Rentals.Where(r => carsFromGroup.Select(c => c.Id).Contains(r.CarId));

            var availableCars = carsFromGroup;

            foreach (var rental in rentalsFromGroup)
            {
                if (rental.PickupDate <= returnDate && pickupDate <= rental.ReturnDate)
                {
                    availableCars = availableCars.Where(c => c.Id != rental.CarId);
                }
            }

            var car = availableCars.First();

            var newRental = new Rental()
            {
                Car        = car,
                PickupDate = pickupDate,
                ReturnDate = returnDate,
                Client     = client,
            };

            context.Rentals.Add(newRental);
            context.SaveChanges();

            // Call function to send confirmation email to email address.
            // Commented out
            // MailHelper.SendConfirmationMail(client);

            return(View(MVC.Rentals.Views.Successful, client));
        }