public void ReturnCar(Guid rentalId, Guid carId, Guid driverId, DateTime finished) { Car car = this._unitOfWork.CarRepository.Get(carId) ?? throw new Exception($"Could not find the car: '{carId}'"); Driver driver = this._unitOfWork.DriverRepository.Get(driverId) ?? throw new Exception($"Could not find the driver: '{driverId}'"); Rental rental = this._unitOfWork.RentalRepository.Get(rentalId) ?? throw new Exception($"Could not find rental '{rentalId}'"); //change position of car this._positionService.CarPosition(car); //end rental (set finished time value, calculate cost and amount of free minutes) rental.ReturnCar(finished); //set car status to "free" car.MakeCarFree(); //add calculated amount of free miutes to driver's account driver.AddFreeMinutes(rental.FreeMinutes); //change driver's balance driver.ChangeBalance(false, rental.Total); this._unitOfWork.Commit(); }