Move the arrive function to the service. #311

This commit is contained in:
Korina Cordero 2020-01-31 08:53:35 +00:00
parent b651d06ec8
commit bf3136da62
4 changed files with 100 additions and 35 deletions

View file

@ -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();
}

View file

@ -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 = [];

View file

@ -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 = [];

View file

@ -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);
}