Пример #1
0
        public async Task RentCar(RentCarModel model, DateTime currentDate)
        {
            AssertRentalRangeValid(model.StartDate, model.EndDate, currentDate);
            var customer =
                await _context.Customers.FirstOrDefaultAsync(c => c.Email == model.CustomerEmail);

            if (customer == null)
            {
                throw new CustomerNotFound();
            }

            var carToRent =
                await FindAvailableCarsForRange(model.StartDate, model.EndDate)
                .FirstOrDefaultAsync(car => car.Id == model.CarId);

            if (carToRent == null)
            {
                throw new CarNotAvailable();
            }

            var booking = new RentalBooking()
            {
                Id            = model.BookingId,
                Car           = carToRent,
                BookingNumber = model.BookingNumber,
                StartDate     = model.StartDate,
                EndDate       = model.EndDate,
                Customer      = customer
            };
            await _context.Bookings.AddAsync(booking);

            await _context.SaveChangesAsync();
        }
Пример #2
0
        private static CustomerBookingOutputModel ToBookingOutputModel(RentalBooking booking)
        {
            var returnRentalModel = booking.RentalReturn != null
                ? new BookingReturnOutputModel(booking.RentalReturn.ReturnDate, booking.RentalReturn.Mileage,
                                               booking.RentalReturn.Price)
                : null;

            return(new CustomerBookingOutputModel(
                       booking.BookingNumber,
                       booking.Car.Model,
                       booking.Car.Category,
                       booking.StartDate,
                       booking.EndDate,
                       returnRentalModel));
        }
        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);
        }