Add JO event creation and notifications when JO is auto assigned a hub and rider. #374

This commit is contained in:
Korina Cordero 2020-04-13 02:50:20 +00:00
parent 51ad36b272
commit 64b533b2df

View file

@ -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