diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index e0b2378e..038ac73b 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -31,6 +31,7 @@ use App\Service\GeofenceTracker; use App\Service\RiderTracker; use App\Service\MapTools; use App\Service\InventoryManager; +use App\Service\RiderAssignmentHandlerInterface; use App\Entity\MobileSession; use App\Entity\Customer; @@ -821,7 +822,8 @@ class APIController extends Controller implements LoggedController } public function requestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo, - MapTools $map_tools, InventoryManager $im) + MapTools $map_tools, InventoryManager $im, MQTTClient $mclient, + RiderAssignmentHandlerInterface $rah) { // check required parameters and api key $required_params = [ @@ -1024,19 +1026,48 @@ class APIController extends Controller implements LoggedController $jo->setHub($nearest_hub); $jo->setRider($assigned_rider); $jo->setStatus(JOStatus::ASSIGNED); + + $assigned_rider->setAvailable(false); } } $em->persist($jo); $em->persist($invoice); - // add event log + // add event log for JO $event = new JOEvent(); $event->setDateHappen(new DateTime()) ->setTypeID(JOEventType::CREATE) ->setJobOrder($jo); $em->persist($event); + // check JO status + if ($jo->getStatus() == JOStatus::ASSIGNED) + { + // add event logs for hub and rider assignments + $hub_assign_event = new JOEvent(); + $hub_assign_event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::HUB_ASSIGN) + ->setJobOrder($jo); + + $em->persist($hub_assign_event); + + $rider_assign_event = new JOEvent(); + $rider_assign_event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_ASSIGN) + ->setJobOrder($jo); + + $em->persist($rider_assign_event); + + // user mqtt event + $payload = [ + 'event' => 'outlet_assign' + ]; + $mclient->sendEvent($jo, $payload); + + $rah->assignJobOrder($jo, $jo->getRider()); + } + $em->flush(); // make invoice json data