public TripEventArgs(CustomerSystem.CustomerGroup group, System.Windows.Vector start, System.Windows.Vector end, CarSystem.Car car) { Group = group; Start = start; End = end; Car = car; }
public void OnTripEnd(object source, TripEventArgs e) { CustomerSystem.CustomerGroup group = e.Group; System.Windows.Vector start = e.Start; System.Windows.Vector end = e.End; CarSystem.Car carObject = e.Car; var garageLoc = carObject.Garage.Location; DatabaseHelper.QueueDatabaseRequest( database => (from garage in database.Garages let loc = garage.Location where loc.X == garageLoc.X && loc.Y == garageLoc.Y select garage).ToList(), data => { if (data.Count == 0) { throw new Exception("Cannot find garage in database"); } else { var garage = data.First(); DatabaseHelper.QueueDatabaseAction((database) => { if (garage == null) { throw new Exception($"Unknown garage {carObject.Garage}"); } var car = new Car { CityInstance = Instance, Garage = garage, Model = carObject.Model.Name, DistanceTravelled = (int)Math.Round(carObject.DistanceTraveled) }; var trip = new Trip { Car = car, Distance = carObject.DistanceTraveled, StartLocation = DatabaseHelper.CreateDBVector(start), EndLocation = DatabaseHelper.CreateDBVector(end), Price = 0.0 }; database.Trips.Add(trip); database.SaveChanges(); }); } }, MainScreen.CommandLoop ); }
/// <summary> /// The customer makes a review depending on how long they had to wait, their moral state and the time of the ride. /// </summary> public void MakeReview(CarSystem.Car car) { Review r = new Review(Customer); car.Reviews.Add(r); }