Exemplo n.º 1
0
        private async Task UpdateVehicleDrivingStatus(Vehicle vehicle, DrivingStatus drivingStatus)
        {
            // This function must be re-entrant as it's running as a timer interval handler
            await _VehiclePositionsLock.WaitAsync();

            try
            {
                if (!_updatingVehiclePositions)
                {
                    _updatingVehiclePositions = true;

                    if (TryUpdateVehicleDrivingStatus(vehicle, drivingStatus))
                    {
                        if (this._constants.allowSubjectNextInsideGameLoop)
                        {
                            _subject.OnNext(vehicle.ToModel());
                        }
                    }

                    _updatingVehiclePositions = false;
                }
            }
            finally
            {
                _VehiclePositionsLock.Release();
            }
        }
Exemplo n.º 2
0
 private bool TryUpdateVehicleDrivingStatus(Vehicle vehicle, DrivingStatus drivingStatus)
 {
     if (vehicle.DrivingStatus == DrivingStatus.Crashed.ToString())
     {
         return(false);
     }
     vehicle.DrivingStatus = drivingStatus.ToString();
     return(true);
 }
Exemplo n.º 3
0
 public Driving(int id, DateTime date, Location startLocation, Vehicle vehicle, User dispatcher, Location destinationLocation, User customer, Driver driver, double price, Comment comment, DrivingStatus drivingStatus)
 {
     this.Id             = id;
     Date                = date;
     StartLocation       = startLocation;
     Vehicle             = vehicle;
     Dispatcher          = dispatcher;
     DestinationLocation = destinationLocation;
     Customer            = customer;
     Driver              = driver;
     Price               = price;
     Comment             = comment;
     DrivingStatus       = drivingStatus;
 }
Exemplo n.º 4
0
            public static Vehicle Create(string name, int mph, int x, int y, bool adaptiveCruiseOn, DrivingStatus drivingStatus = App.DrivingStatus.Driving, bool isHazard = false)
            {
                Constants constants = new Constants();

                return(new Vehicle(constants, new CruiseAlgorithm(constants))
                {
                    Name = name,
                    Mph = mph,
                    X = x,
                    Y = y,
                    AdaptiveCruiseOn = adaptiveCruiseOn,
                    AdaptiveCruiseDesiredMph = adaptiveCruiseOn? mph : 0,
                    IsHazard = isHazard,
                    DrivingStatus = mph == 0? App.DrivingStatus.Stopped.ToString(): drivingStatus.ToString()
                });
            }
        public List<Driving> ReadDrivings()
        {
            LocationRepository locationRepository = new LocationRepository();
            UserRepository userRepository = new UserRepository();
            DriverRepository driverRepository = new DriverRepository();
            CommentRepository commentRepository = new CommentRepository();
            if (System.IO.File.Exists(@"C:\Users\Djole\Documents\Visual Studio 2017\Projects\TaxiSluzba_backend\TaxiSluzba_backend\Files\Drivings.txt"))
                {
                string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Djole\Documents\Visual Studio 2017\Projects\TaxiSluzba_backend\TaxiSluzba_backend\Files\Drivings.txt");
                List<Driving> drivings = new List<Driving>();
                foreach (string line in lines)
                {
                    string[] userString = line.Split('|');
                    if (userString.Count() != 11)
                        return null;
                    string[] dateSplit = userString[1].Split(';');
                    Location location = null;
                    Location destination = null;
                    foreach (Location l in locationRepository.ReadLocations())
                    {
                        if (userString[2] != "")
                        {
                            if (l.Id == Int32.Parse(userString[2]))
                            {
                                location = l;
                                continue;
                            }
                        }
                        if (userString[5] != "")
                        {
                            if (l.Id == Int32.Parse(userString[5]))
                            {
                                destination = l;
                            }
                        }
                    }
                    
                    Vehicle vehicle = new Vehicle();

                    User dispatcher = new User();
                    User customer = new User();
                    List<User> listUsers = userRepository.ReadUsers();
                    if (listUsers != null)
                    {

                        foreach (User u in listUsers)
                        {
                            if (userString[4] != "")
                            {
                                if (u.ID == Int32.Parse(userString[4]))
                                {
                                    dispatcher = u;
                                    continue;
                                }
                            }
                            if (userString[6] != "")
                            {
                                if (u.ID == Int32.Parse(userString[6]))
                                {
                                    customer = u;
                                }
                            }
                        }
                    }

                    Driver driver = new Driver();
                    List<Driver> listDrivers = driverRepository.ReadDrivers();
                    if (listDrivers != null && userString[7]!="")
                    {
                        foreach (Driver d in listDrivers)
                        {
                            if (d.ID == Int32.Parse(userString[7]))
                            {
                                driver = d;
                                break;
                            }
                        }
                    }

                    Comment comment = new Comment();
                    List<Comment> comments = commentRepository.ReadComments();
                    if (comments != null && userString[9]!="")
                    {
                        foreach (Comment c in comments)
                        {
                            if (c.Id == Int32.Parse(userString[9]))
                            {
                                comment = c;
                                break;
                            }
                        }
                    }
                    DrivingStatus drivingStatus = (DrivingStatus)Enum.Parse(typeof(DrivingStatus), userString[10]);
                    DateTime Date = new DateTime(Int32.Parse(dateSplit[0]), Int32.Parse(dateSplit[1]), Int32.Parse(dateSplit[2]));
                    Driving driving = new Driving(Int32.Parse(userString[0]), Date, location, vehicle,
                    dispatcher, destination, customer, driver, Double.Parse(userString[8]), comment, drivingStatus);
                    drivings.Add(driving);
                }
                return drivings;
            }
            return null;
        }