示例#1
0
        public async Task GetCurrentLongAndLattForDriver(int Client_Id, double Client_Pickup_Long, double Client_Pickup_Latt, int Driver_Id, double Driver_Pickup_Long, double Driver_Pickup_Latt)
        {
            if (Driver_Id != 0)
            {
                //AllDriverPickUpLocationsDto DriverPickUpLocations = new AllDriverPickUpLocationsDto();
                //DriverPickUpLocations.Client_Id = Client_Id;
                //DriverPickUpLocations.MatchedDriverVehical.Driver_Id =Driver_Id;
                //DriverPickUpLocations.MatchedDriverVehical.Driver_Pickup_Latt = Driver_Pickup_Latt;
                //DriverPickUpLocations.MatchedDriverVehical.Driver_Pickup_Long = Driver_Pickup_Long;


                AllMatchedDriverVehicalDto.Add(new AllDriverPickUpLocationsDto()
                {
                    Client_Id            = Client_Id,
                    MatchedDriverVehical = new MatchedDriverVehicalDto()
                    {
                        Driver_Id          = Driver_Id,
                        Driver_Pickup_Latt = Driver_Pickup_Latt,
                        Driver_Pickup_Long = Driver_Pickup_Long
                    }
                });

                //if (AllMatchedDriverVehicalDto.Count == _MatchedDriverVehicalDto.Count)
                //{

                MatchedDriverVehicalDto nearestdriverobj = GetNearestDriver(Client_Id, Client_Pickup_Long, Client_Pickup_Latt);
                //  Push Notification To Nearest Driver
                if (nearestdriverobj != null)
                {
                    PushToNearestLongAndLattOfDriverForDriver(Client_Id, Driver_Id, Client_Pickup_Long, Client_Pickup_Latt);    //nearestdriverobj.Driver_Id, nearestdriverobj.Driver_Pickup_Long, nearestdriverobj.Driver_Pickup_Latt);
                }
                //  }
            }
        }
示例#2
0
        //// calling when driver accept or reject trip
        public async Task StatusTripFromDriver(int Client_Id, int Driver_Id, int TripStatusFromDriver, double Client_Pickup_Long, double Client_Pickup_Latt)
        {
            if (TripStatusFromDriver == (int)Enums.TripStatusFromDriver.Accepted)
            {
                await Clients.User(Client_Id.ToString()).SendAsync("NotifiedForClientByNearestDriver", Driver_Id);

                // await Clients.All.SendAsync("NotifiedForClientByNearestDriver",Driver_Id);
            }
            else // Rejected or TimerEnded
            {
                MatchedDriverVehicalDto Nextdriverobj = GetNextNearestDriver(Client_Id, Client_Pickup_Long, Client_Pickup_Latt, Driver_Id);
                //  Push Notification To Next Driver
                if (Nextdriverobj != null)
                {
                    PushToNearestLongAndLattOfDriverForDriver(Client_Id, Nextdriverobj.Driver_Id, Nextdriverobj.Driver_Pickup_Long, Nextdriverobj.Driver_Pickup_Latt);
                }
            }
        }
示例#3
0
        //To Get Nearest Pickup_Long and Trip_Pickup_Latt of   Driver
        public MatchedDriverVehicalDto GetNearestDriver(int Client_Id, double Client_Pickup_Long, double Client_Pickup_Latt)
        {
            var coord = new GeoCoordinate(Client_Pickup_Long, Client_Pickup_Latt);

            var nearest = AllMatchedDriverVehicalDto.Where(x => x.Client_Id == Client_Id).Select(x => new GeoCoordinate(x.MatchedDriverVehical.Driver_Pickup_Latt, x.MatchedDriverVehical.Driver_Pickup_Long))
                          .OrderBy(x => x.GetDistanceTo(coord))
                          .FirstOrDefault();

            MatchedDriverVehicalDto obj = AllMatchedDriverVehicalDto.Where(x => x.MatchedDriverVehical.Driver_Pickup_Latt == nearest.Latitude &&
                                                                           x.MatchedDriverVehical.Driver_Pickup_Long == nearest.Longitude
                                                                           ).Select(x => new MatchedDriverVehicalDto
            {
                Driver_Id          = x.MatchedDriverVehical.Driver_Id,
                Driver_Pickup_Long = x.MatchedDriverVehical.Driver_Pickup_Long,
                Driver_Pickup_Latt = x.MatchedDriverVehical.Driver_Pickup_Latt
            }).FirstOrDefault();

            return(obj);
        }
示例#4
0
        //to Get Next Nearest Driver
        public MatchedDriverVehicalDto GetNextNearestDriver(int Client_Id, double Client_Pickup_Long, double Client_Pickup_Latt, int Driver_Id)
        {
            //Get all Drivers from list expect specific driver
            List <AllDriverPickUpLocationsDto> ListNextMatchedDriver = AllMatchedDriverVehicalDto.Where(a => a.Client_Id == Client_Id && a.MatchedDriverVehical.Driver_Id != Driver_Id).ToList();

            var coord = new GeoCoordinate(Client_Pickup_Long, Client_Pickup_Latt);

            var nearest = ListNextMatchedDriver.Where(q => q.Client_Id == Client_Id).Select(x => new GeoCoordinate(x.MatchedDriverVehical.Driver_Pickup_Latt, x.MatchedDriverVehical.Driver_Pickup_Long))
                          .OrderBy(x => x.GetDistanceTo(coord))
                          .FirstOrDefault();

            MatchedDriverVehicalDto obj = ListNextMatchedDriver.Where(x => x.MatchedDriverVehical.Driver_Pickup_Latt == nearest.Latitude &&
                                                                      x.MatchedDriverVehical.Driver_Pickup_Long == nearest.Longitude
                                                                      ).Select(x => new MatchedDriverVehicalDto
            {
                Driver_Id          = x.MatchedDriverVehical.Driver_Id,
                Driver_Pickup_Long = x.MatchedDriverVehical.Driver_Pickup_Long,
                Driver_Pickup_Latt = x.MatchedDriverVehical.Driver_Pickup_Latt
            }).FirstOrDefault();

            return(obj);
        }