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); }
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(); }
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); }