From d78a5ebf804d7e35d57025e47ffa5fa0b62da81b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 13 Aug 2021 08:08:59 +0000 Subject: [PATCH] Add rider current job order field. #612 --- src/Controller/RAPIController.php | 109 +++++++++++++ src/Entity/Rider.php | 21 +++ .../RiderAPIHandler/ResqRiderAPIHandler.php | 146 +++++++----------- 3 files changed, 189 insertions(+), 87 deletions(-) diff --git a/src/Controller/RAPIController.php b/src/Controller/RAPIController.php index 40635743..a818e9a7 100644 --- a/src/Controller/RAPIController.php +++ b/src/Controller/RAPIController.php @@ -323,4 +323,113 @@ class RAPIController extends Controller return $res->getReturnResponse(); } + public function preHubArrive(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->preHubArrive($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function preHubDepart(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->preHubDepart($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function postHubArrive(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->postHubArrive($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function postHubDepart(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->postHubDepart($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function startJobOrder(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->startJobOrder($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } } diff --git a/src/Entity/Rider.php b/src/Entity/Rider.php index 502d93bc..8a2ed9ea 100644 --- a/src/Entity/Rider.php +++ b/src/Entity/Rider.php @@ -120,6 +120,15 @@ class Rider */ protected $sessions; + // current job order + // NOTE: for forgotten reasons, we don't set active_job_order. + // but we now need rider's current JO for the time stamp events + /** + * @ORM\OneToOne(targetEntity="JobOrder") + * @ORM\JoinColumn(name="current_jo_id", referencedColumnName="id") + */ + protected $current_job_order; + public function __construct() { $this->job_orders = new ArrayCollection(); @@ -132,6 +141,7 @@ class Rider $this->password = ''; $this->active_job_order = null; + $this->current_job_order = null; } public function getID() @@ -371,4 +381,15 @@ class Rider $map_label = $this->first_name .' ' . $this->last_name; return $map_label; } + + public function setCurrentJobOrder(JobOrder $jo = null) + { + $this->current_job_order = $jo; + return $this; + } + + public function getCurrentJobOrder() + { + return $this->current_job_order; + } } diff --git a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php index c816b6d1..db83076b 100644 --- a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php +++ b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php @@ -409,8 +409,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface // TODO: send mqtt event (?) - // add event log $rider = $this->session->getRider(); + + // set rider's current job order + $rider->setCurrentJobOrder($jo); + + // set rider to unavailable + $rider->setAvailable(false); + + // add event log $event = new JOEvent(); $event->setDateHappen(new DateTime()) ->setTypeID(JOEventType::RIDER_ACCEPT) @@ -434,8 +441,11 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface // requeue it, instead of cancelling it $jo->requeue(); - // add event log $rider = $this->session->getRider(); + // set rider's current job order to null + $rider->setCurrentJobOrder(); + + // add event log $event = new JOEvent(); $event->setDateHappen(new DateTime()) ->setTypeID(JOEventType::REQUEUE) @@ -513,10 +523,26 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface return $data; } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + + $timestamp_event = new JOEvent(); + $timestamp_event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_ARRIVE_HUB) + ->setJobOrder($jo) + ->setRider($rider); + + $this->em->persist($timestamp_event); + // tag rider as available $rider = $this->session->getRider(); $rider->setAvailable(true); + // set rider's current job order to null + $rider->setCurrentJobOrder(); + $this->em->flush(); return $data; @@ -860,24 +886,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function hubDepart(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); // create time stamp event for JO event $rider = $this->session->getRider(); @@ -895,24 +912,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function preHubArrive(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); // create time stamp event for JO event $rider = $this->session->getRider(); @@ -930,25 +938,16 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function preHubDepart(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } - + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + // create time stamp event for JO event $rider = $this->session->getRider(); $event = new JOEvent(); @@ -965,24 +964,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function startJobOrder(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); // create time stamp event for JO event $rider = $this->session->getRider(); @@ -1000,24 +990,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function postHubArrive(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); // create time stamp event for JO event $rider = $this->session->getRider(); @@ -1035,24 +1016,15 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface public function postHubDepart(Request $req) { - $required_params = [ - 'jo_id' - ]; + $required_params = []; $data = $this->checkParamsAndKey($req, $required_params); if (isset($data['error'])) return $data; - // find job order. - // NOTE: Not using getActiveJobOrder since unsure if it is really being set - $jo_id = $req->request->get('jo_id'); - $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); - if ($jo == null) - { - $data = [ - 'error' => 'No job order found.' - ]; - return $data; - } + $rider = $this->session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); // create time stamp event for JO event $rider = $this->session->getRider();