diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 8b599712..a186aaa6 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1380,6 +1380,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // get previously assigned hub, if any $old_hub = $obj->getHub(); + // get previously assigned rider, if any + $old_rider = $obj->getRider(); + if (empty($error_array)) { // rider mqtt event @@ -1391,6 +1394,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ]; $mclient->sendRiderEvent($obj, $rider_payload); + // need to unset first rider's current job order + $old_rider = $obj->getRider(); + if ($old_rider != null) + { + if (($old_rider->getCurrentJobOrder() != null) && + ($old_rider->getCurrentJobOrder()->getID() == $obj->getID())) + { + $old_rider->setCurrentJobOrder(); + // set available flag for first rider + $old_rider->setAvailable(true); + } + } + // coordinates $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); @@ -1645,9 +1661,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $old_rider = $obj->getRider(); if ($old_rider != null) { - $old_rider->setCurrentJobOrder(); - // set available flag for first rider - $old_rider->setAvailable(true); + if (($old_rider->getCurrentJobOrder() != null) && + ($old_rider->getCurrentJobOrder()->getID() == $obj->getID())) + { + $old_rider->setCurrentJobOrder(); + // set available flag for first rider + $old_rider->setAvailable(true); + } } // coordinates