Move the arrive function to the service. #311
This commit is contained in:
parent
b651d06ec8
commit
bf3136da62
4 changed files with 100 additions and 35 deletions
|
|
@ -314,46 +314,25 @@ class RAPIController extends Controller
|
|||
|
||||
}
|
||||
|
||||
public function arrive(Request $req, MQTTClient $mclient)
|
||||
public function arrive(Request $req, RiderAPIHandlerInterface $rapi_handler)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$required_params = ['jo_id'];
|
||||
$res = $this->checkJO($req, $required_params, $jo);
|
||||
if ($res->isError())
|
||||
return $res->getReturnResponse();
|
||||
$res = new APIResult();
|
||||
|
||||
// TODO: refactor this into a jo handler class, so we don't have to repeat for control center
|
||||
$data = $rapi_handler->arrive($req);
|
||||
|
||||
// set jo status to in progress
|
||||
$jo->setStatus(JOStatus::IN_PROGRESS);
|
||||
|
||||
// add event log
|
||||
$rider = $this->session->getRider();
|
||||
$event = new JOEvent();
|
||||
$event->setDateHappen(new DateTime())
|
||||
->setTypeID(JOEventType::RIDER_ARRIVE)
|
||||
->setJobOrder($jo)
|
||||
->setRider($rider);
|
||||
$em->persist($event);
|
||||
|
||||
$em->flush();
|
||||
|
||||
// send mqtt event
|
||||
$rider = $this->session->getRider();
|
||||
$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);
|
||||
if (isset($data['error']))
|
||||
{
|
||||
$message = $data['error'];
|
||||
|
||||
$res->setError(true)
|
||||
->setErrorMessage($message);
|
||||
}
|
||||
else
|
||||
{
|
||||
$res->setData($data);
|
||||
}
|
||||
|
||||
// response
|
||||
return $res->getReturnResponse();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -408,6 +408,47 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
|||
return $data;
|
||||
}
|
||||
|
||||
public function arrive(Request $req)
|
||||
{
|
||||
$required_params = ['jo_id'];
|
||||
$data = $this->checkJO($req, $required_params, $jo);
|
||||
if (isset($data['error']))
|
||||
return $data;
|
||||
|
||||
// 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);
|
||||
|
||||
// add event log
|
||||
$rider = $this->session->getRider();
|
||||
$event = new JOEvent();
|
||||
$event->setDateHappen(new DateTime())
|
||||
->setTypeID(JOEventType::RIDER_ARRIVE)
|
||||
->setJobOrder($jo)
|
||||
->setRider($rider);
|
||||
$this->em->persist($event);
|
||||
|
||||
$this->em->flush();
|
||||
|
||||
// send mqtt event
|
||||
$rider = $this->session->getRider();
|
||||
$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(),
|
||||
];
|
||||
$this->mclient->sendEvent($jo, $payload);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function checkMissingParameters(Request $req, $params = [])
|
||||
{
|
||||
$missing = [];
|
||||
|
|
|
|||
|
|
@ -405,6 +405,47 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
|
|||
return $data;
|
||||
}
|
||||
|
||||
public function arrive(Request $req)
|
||||
{
|
||||
$required_params = ['jo_id'];
|
||||
$data = $this->checkJO($req, $required_params, $jo);
|
||||
if (isset($data['error']))
|
||||
return $data;
|
||||
|
||||
// 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);
|
||||
|
||||
// add event log
|
||||
$rider = $this->session->getRider();
|
||||
$event = new JOEvent();
|
||||
$event->setDateHappen(new DateTime())
|
||||
->setTypeID(JOEventType::RIDER_ARRIVE)
|
||||
->setJobOrder($jo)
|
||||
->setRider($rider);
|
||||
$this->em->persist($event);
|
||||
|
||||
$this->em->flush();
|
||||
|
||||
// send mqtt event
|
||||
$rider = $this->session->getRider();
|
||||
$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(),
|
||||
];
|
||||
$this->mclient->sendEvent($jo, $payload);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function checkMissingParameters(Request $req, $params = [])
|
||||
{
|
||||
$missing = [];
|
||||
|
|
|
|||
|
|
@ -15,4 +15,8 @@ interface RiderAPIHandlerInterface
|
|||
public function getJobOrder(Request $req);
|
||||
|
||||
public function acceptJobOrder(Request $req);
|
||||
|
||||
public function cancelJobOrder(Request $req);
|
||||
|
||||
public function arrive(Request $req);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue