Ejemplo n.º 1
0
        public async Task <RentalReturn> ReturnCar(ReturnCarModel model)
        {
            var booking = await
                          _context.Bookings.FirstOrDefaultAsync(
                rental => rental.BookingNumber == model.BookingNumber && rental.Customer.Email == model.CustomerEmail);

            if (booking == null)
            {
                throw new BookingNotFound();
            }

            var returnedCar =
                await _context.Cars.FirstAsync(car => car.Id == booking.CarId);

            var rentalDays = (model.ReturnDate - booking.StartDate).Days;
            var price      = _priceCalculator.CalculatePrice(returnedCar.Category, rentalDays, model.Mileage);

            var rentalReturn = new RentalReturn
            {
                Id            = booking.Id,
                Mileage       = model.Mileage,
                RentalBooking = booking,
                Price         = price,
                ReturnDate    = model.ReturnDate
            };
            await _context.Returns.AddAsync(rentalReturn);

            returnedCar.Mileage += model.Mileage;
            await _context.SaveChangesAsync();

            return(rentalReturn);
        }
Ejemplo n.º 2
0
        public async Task RegisterCustomer(Customer customer)
        {
            var isUniqueCustomer =
                !await _context.Customers.AnyAsync(c => c.Email == customer.Email);

            if (!isUniqueCustomer)
            {
                throw new EmailAlreadyExists();
            }

            await _context.Customers.AddAsync(customer);

            await _context.SaveChangesAsync();
        }
Ejemplo n.º 3
0
        public async Task FindShouldReturnResultWithFilter()
        {
            //Arrange
            var fakeCarOne = new Car {
                Id = one
            };

            db.AddRange(fakeCarOne);
            await db.SaveChangesAsync();

            var agencyCarService = new AgencyCarService(db);
            //Act
            var result = await agencyCarService.FindByIdAsync(1);

            //Assert
            result
            .Id
            .Should()
            .Be(1);
        }
        private static async Task <RentalBooking> AddBooking(RentalCarsDbContext context, Car car, string startDate, string endDate)
        {
            var customer = context.Customers.First();

            var booking = new RentalBooking
            {
                Id            = Guid.NewGuid(),
                CarId         = car.Id,
                BookingNumber = "ABC",
                StartDate     = DateTime.Parse(startDate),
                EndDate       = DateTime.Parse(endDate),
                CustomerId    = customer.Id
            };

            await context.Bookings.AddAsync(booking);

            await context.SaveChangesAsync();

            return(booking);
        }