コード例 #1
0
        void RequestTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            TimerCounter++;

            if (TimerCounter == 30)
            {
                if (!isDriverAccepted)
                {
                    TimerCounter = 0;
                    DatabaseReference cancelDriverRef = database.GetReference("driversAvailable/" + selectedDriver.ID + "/ride_id");
                    cancelDriverRef.SetValue("timeout");

                    if (mAvailableDrivers != null)
                    {
                        NotifyDriver(mAvailableDrivers);
                    }
                    else
                    {
                        RequestTimer.Enabled = false;
                        //Event
                        NoDriverAcceptedRequest?.Invoke(this, new EventArgs());
                    }
                }
            }
        }
コード例 #2
0
        public void NotifyDriver(List <AvailableDriver> availableDrivers)
        {
            mAvailableDrivers = availableDrivers;
            if (mAvailableDrivers.Count >= 1 && mAvailableDrivers != null)
            {
                selectedDriver  = mAvailableDrivers[0];
                notifyDriverRef = database.GetReference("driversAvailable/" + selectedDriver.ID + "/ride_id");
                notifyDriverRef.SetValue(newTrip.RideID);

                if (mAvailableDrivers.Count > 1)
                {
                    mAvailableDrivers.RemoveAt(0);
                }
                else if (mAvailableDrivers.Count == 1)
                {
                    mAvailableDrivers = null;
                }
                RequestTimer.Enabled = true;
            }
            else
            {
                //No driver accepted
                RequestTimer.Enabled = false;
                NoDriverAcceptedRequest?.Invoke(this, new EventArgs());
            }
        }
        private void RequestTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timerCounter++;

            if (timerCounter == 10)
            {
                if (!isDriverAccepted)
                {
                    timerCounter = 0;
                    DatabaseReference timeoutdriverRef = Database.DefaultInstance.GetRootReference().GetChild("driversAvailable/" + selectedDriver.ID + "/ride_id");
                    timeoutdriverRef.SetValue <NSString>((NSString)"timeout");

                    // Pass down request to another driver
                    if (availableDrivers != null)
                    {
                        NotifyDriver(availableDrivers);
                    }
                    else
                    {
                        RequestTimer.Enabled = false;
                        NoDriverAcceptedRequest?.Invoke(this, new EventArgs());
                    }
                }
            }
        }
        public void NotifyDriver(List <AvailableDriver> drivers)
        {
            availableDrivers = drivers;

            if (availableDrivers.Count >= 1 && availableDrivers != null)
            {
                selectedDriver  = availableDrivers[0];
                notifyDriverRef = Database.DefaultInstance.GetRootReference().GetChild("driversAvailable/" + selectedDriver.ID + "/ride_id");
                notifyDriverRef.SetValue <NSString>((NSString)newTripDetails.RideID);


                // Remove selected driver from the list
                if (availableDrivers.Count > 1)
                {
                    availableDrivers.RemoveAt(0);
                }
                else if (availableDrivers.Count == 1)
                {
                    availableDrivers = null;
                }

                RequestTimer.Enabled = true;
            }
            else
            {
                // No driver accepted

                RequestTimer.Enabled = false;
                NoDriverAcceptedRequest?.Invoke(this, new EventArgs());
            }
        }
コード例 #5
0
        public void NotifyDriver(List <ActiveDrivers> availableDrivers, Rides rideInfo)
        {
            rides             = rideInfo;
            mAvailableDrivers = availableDrivers;
            if (mAvailableDrivers.Count >= 1 && mAvailableDrivers != null)
            {
                selectedDriver = mAvailableDrivers[0];


                //  notifyDriverRef = database.GetReference("driversAvailable/" + selectedDriver.ID + "/ride_id");
                // notifyDriverRef.SetValue(newTrip.RideID);

                string driverID    = selectedDriver.DriverId.ToString();
                string rideDetails = JsonConvert.SerializeObject(RideDetails());
                SendNotification.Invoke(this, new SendNotificationEventArgs {
                    driverID = driverID, rideDetails = rideDetails
                });
                //   hubConnection.InvokeAsync("NotifyDriver", driverID ,rideDetails );

                if (mAvailableDrivers.Count > 1)
                {
                    mAvailableDrivers.RemoveAt(0);
                }

                else if (mAvailableDrivers.Count == 1)
                {
                    //No more available drivers in our list
                    mAvailableDrivers = null;
                }

                RequestTimer.Enabled = true;
            }

            else
            {
                //No driver accepted
                RequestTimer.Enabled = false;
                NoDriverAcceptedRequest?.Invoke(this, new EventArgs());
            }
        }