Add arrive and hubDepart. #617
This commit is contained in:
parent
5ea4ac013b
commit
bcd55901d3
1 changed files with 110 additions and 17 deletions
|
|
@ -408,6 +408,9 @@ class RiderController extends APIController
|
||||||
// set jo status to in transit
|
// set jo status to in transit
|
||||||
$jo->setStatus(JOStatus::IN_TRANSIT);
|
$jo->setStatus(JOStatus::IN_TRANSIT);
|
||||||
|
|
||||||
|
// set delivery status
|
||||||
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ACCEPT);
|
||||||
|
|
||||||
// TODO: send mqtt event (?)
|
// TODO: send mqtt event (?)
|
||||||
|
|
||||||
// set rider's current job order
|
// set rider's current job order
|
||||||
|
|
@ -482,8 +485,114 @@ class RiderController extends APIController
|
||||||
return new APIResponse(true, 'Job order requeued.', $data);
|
return new APIResponse(true, 'Job order requeued.', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function arrive(Request $req, EntityManagerInterface $em)
|
public function hubDepart(Request $req, EntityManagerInterface $em)
|
||||||
{
|
{
|
||||||
|
$required_params = [];
|
||||||
|
$missing = $this->checkMissingParameters($req, $required_params);
|
||||||
|
if (count($missing) > 0)
|
||||||
|
{
|
||||||
|
$params = implode(', ', $missing);
|
||||||
|
return new APIResponse(false, 'Missing parameter(s): ' . $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// get capi user to link to rider api user
|
||||||
|
$capi_user_id = $this->getUser()->getID();
|
||||||
|
|
||||||
|
// check if capi user already has a rider api user
|
||||||
|
$rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]);
|
||||||
|
|
||||||
|
// are we logged in?
|
||||||
|
if (!$rapi_session->hasRider())
|
||||||
|
return new APIResponse(false, 'No logged in rider.');
|
||||||
|
|
||||||
|
$rider = $rapi_session->getRider();
|
||||||
|
|
||||||
|
// get rider's current job order
|
||||||
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// set delivery status
|
||||||
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
||||||
|
|
||||||
|
// create time stamp event for JO event
|
||||||
|
$event = new JOEvent();
|
||||||
|
$event->setDateHappen(new DateTime())
|
||||||
|
->setTypeID(JOEventType::RIDER_DEPART_HUB)
|
||||||
|
->setJobOrder($jo)
|
||||||
|
->setRider($rider);
|
||||||
|
|
||||||
|
$em->persist($event);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
return new APIResponse(true, 'Rider leave hub.', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function preHubArrive(Request $req, EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function preHubDepart(Request $req, EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function startJobOrder(Request $req, EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function arrive(Request $req, EntityManagerInterface $em, MQTTClient $mclient)
|
||||||
|
{
|
||||||
|
$required_params = ['jo_id'];
|
||||||
|
|
||||||
|
// get capi user to link to rider api user
|
||||||
|
$capi_user_id = $this->getUser()->getID();
|
||||||
|
|
||||||
|
// check if capi user already has a rider api user
|
||||||
|
$rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]);
|
||||||
|
|
||||||
|
// are we logged in?
|
||||||
|
if (!$rapi_session->hasRider())
|
||||||
|
return new APIResponse(false, 'No logged in rider.');
|
||||||
|
|
||||||
|
$rider = $rapi_session->getRider();
|
||||||
|
|
||||||
|
$msg = $this->checkJO($req, $required_params, $jo, $rider);
|
||||||
|
if (!empty($msg))
|
||||||
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
// TODO: refactor this into a jo handler class, so we don't have to repeat for control center
|
||||||
|
|
||||||
|
// set jo status to in progress
|
||||||
|
$jo->setStatus(JOStatus::IN_PROGRESS);
|
||||||
|
|
||||||
|
// set delivery status
|
||||||
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
||||||
|
|
||||||
|
// add event log
|
||||||
|
$event = new JOEvent();
|
||||||
|
$event->setDateHappen(new DateTime())
|
||||||
|
->setTypeID(JOEventType::RIDER_ARRIVE)
|
||||||
|
->setJobOrder($jo)
|
||||||
|
->setRider($rider);
|
||||||
|
$em->persist($event);
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
// send mqtt event
|
||||||
|
$image_url = $req->getScheme() . '://' . $req->getHttpHost() . $req->getBasePath() . '/assets/images/user.gif';
|
||||||
|
if ($rider->getImageFile() != null)
|
||||||
|
$image_url = $req->getScheme() . '://' . $req->getHttpHost() . $req->getBasePath() . '/uploads/' . $rider->getImageFile();
|
||||||
|
|
||||||
|
$payload = [
|
||||||
|
'event' => 'driver_arrived',
|
||||||
|
'jo_id' => $jo->getID(),
|
||||||
|
'driver_image' => $image_url,
|
||||||
|
'driver_name' => $rider->getFullName(),
|
||||||
|
'driver_id' => $rider->getID(),
|
||||||
|
];
|
||||||
|
$mclient->sendEvent($jo, $payload);
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
return new APIResponse(true, 'Rider arrived at customer location.', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hubArrive(Request $req, EntityManagerInterface $em)
|
public function hubArrive(Request $req, EntityManagerInterface $em)
|
||||||
|
|
@ -510,22 +619,6 @@ class RiderController extends APIController
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hubDepart(Request $req, EntityManagerInterface $em)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function preHubArrive(Request $req, EntityManagerInterface $em)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function preHubDepart(Request $req, EntityManagerInterface $em)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function startJobOrder(Request $req, EntityManagerInterface $em)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public function postHubArrive(Request $req, EntityManagerInterface $em)
|
public function postHubArrive(Request $req, EntityManagerInterface $em)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue