Esempio n. 1
0
        public async Task <Guid> BookVehicle(BookVehicleDTO bookVehicleDTO)
        {
            try
            {
                var vehicle = await _context.Vehicles.FirstOrDefaultAsync(x => x.ID == bookVehicleDTO.VehicleID && x.IsAvailable);

                var customer = await _context.Users.FirstOrDefaultAsync(x => x.Id == bookVehicleDTO.UserID);

                if (vehicle != null && customer != null)
                {
                    vehicle.IsAvailable = false;
                    await _rentalEventService.AddRentalEvent(vehicle, customer, bookVehicleDTO);

                    var userRentalsForVip = await _userRentalService.GetCustomersRentalEventsForTimeRange(customer.Id, Constants.RentalEventDaysForVip);

                    if (userRentalsForVip.Count >= Constants.MinRentalEventsForVip)
                    {
                        customer.IsVip = true;
                    }

                    await _context.SaveChangesAsync();

                    return(vehicle.ID);
                }
                throw new NullReferenceException();
            }
            catch (Exception)
            {
                throw new AggregateException();
            }
        }
 public IActionResult AddRentalEvent(BookVehicleDTO bookVehicleDTO)
 {
     try
     {
         return(Ok(_rentalEventService.CreateEvent(bookVehicleDTO)));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
        public async Task AddRentalEvent(Vehicle vehicle, ApplicationUser customer, BookVehicleDTO bookVehicleDTO)
        {
            var rentalEvent = new RentalEvent
            {
                Customer  = customer,
                Vehicle   = vehicle,
                StartDate = bookVehicleDTO.StartDate,
                EndDate   = bookVehicleDTO.EndDate,
                IsActive  = true
            };

            rentalEvent.TotalRentalEventPrice = _helper.TotalPriceCalculator(rentalEvent);
            await _context.RentalEvents.AddAsync(rentalEvent);

            await _context.SaveChangesAsync();
        }
        public async Task CreateEvent(BookVehicleDTO bookVehicleDTO)
        {
            var vehicle = await _context.Vehicles.FirstOrDefaultAsync(x => x.ID == bookVehicleDTO.VehicleID);

            var customer = await _context.Users.FirstOrDefaultAsync(x => x.Id == bookVehicleDTO.UserID);

            try
            {
                if (vehicle != null && customer != null)
                {
                    await AddRentalEvent(vehicle, customer, bookVehicleDTO);

                    await _context.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
 public async Task <Guid> BookVehicle(BookVehicleDTO bookVehicleDTO) => await _service.BookVehicle(bookVehicleDTO);