Add JO event creation and notifications when JO is auto assigned a hub and rider. #374
This commit is contained in:
parent
51ad36b272
commit
64b533b2df
1 changed files with 33 additions and 2 deletions
|
|
@ -31,6 +31,7 @@ use App\Service\GeofenceTracker;
|
||||||
use App\Service\RiderTracker;
|
use App\Service\RiderTracker;
|
||||||
use App\Service\MapTools;
|
use App\Service\MapTools;
|
||||||
use App\Service\InventoryManager;
|
use App\Service\InventoryManager;
|
||||||
|
use App\Service\RiderAssignmentHandlerInterface;
|
||||||
|
|
||||||
use App\Entity\MobileSession;
|
use App\Entity\MobileSession;
|
||||||
use App\Entity\Customer;
|
use App\Entity\Customer;
|
||||||
|
|
@ -821,7 +822,8 @@ class APIController extends Controller implements LoggedController
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo,
|
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
|
// check required parameters and api key
|
||||||
$required_params = [
|
$required_params = [
|
||||||
|
|
@ -1024,19 +1026,48 @@ class APIController extends Controller implements LoggedController
|
||||||
$jo->setHub($nearest_hub);
|
$jo->setHub($nearest_hub);
|
||||||
$jo->setRider($assigned_rider);
|
$jo->setRider($assigned_rider);
|
||||||
$jo->setStatus(JOStatus::ASSIGNED);
|
$jo->setStatus(JOStatus::ASSIGNED);
|
||||||
|
|
||||||
|
$assigned_rider->setAvailable(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$em->persist($jo);
|
$em->persist($jo);
|
||||||
$em->persist($invoice);
|
$em->persist($invoice);
|
||||||
|
|
||||||
// add event log
|
// add event log for JO
|
||||||
$event = new JOEvent();
|
$event = new JOEvent();
|
||||||
$event->setDateHappen(new DateTime())
|
$event->setDateHappen(new DateTime())
|
||||||
->setTypeID(JOEventType::CREATE)
|
->setTypeID(JOEventType::CREATE)
|
||||||
->setJobOrder($jo);
|
->setJobOrder($jo);
|
||||||
$em->persist($event);
|
$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();
|
$em->flush();
|
||||||
|
|
||||||
// make invoice json data
|
// make invoice json data
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue