From 0e69eb4943b79a080cb8c8149bfba095287c4993 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 2 Jun 2020 09:25:43 +0000 Subject: [PATCH] Add completeJobOrder and setActiveJobOrder API calls. #421 --- config/routes/cmb_rider_api.yaml | 8 ++ src/Controller/CMBRAPIController.php | 44 +++++++++++ src/Ramcar/CMBJOEventType.php | 6 +- .../RiderAPIHandler/CMBRiderAPIHandler.php | 79 +++++++++++++++++++ 4 files changed, 135 insertions(+), 2 deletions(-) diff --git a/config/routes/cmb_rider_api.yaml b/config/routes/cmb_rider_api.yaml index 8a6d6781..947134a5 100644 --- a/config/routes/cmb_rider_api.yaml +++ b/config/routes/cmb_rider_api.yaml @@ -100,4 +100,12 @@ cmb_rapi_jo_start: controller: App\Controller\CMBRAPIController::startJobOrder methods: [POST] +cmb_rapi_jo_complete: + path: /cmbrapi/jobordercomplete + controller: App\Controller\CMBRAPIController::completeJobOrder + methods: [POST] +cmb_rapi_jo_set_active: + path: /cmbrapi/joborderactive + controller: App\Controller\CMBRAPIController::setActiveJobOrder + methods: [POST] diff --git a/src/Controller/CMBRAPIController.php b/src/Controller/CMBRAPIController.php index 807af382..f712361e 100644 --- a/src/Controller/CMBRAPIController.php +++ b/src/Controller/CMBRAPIController.php @@ -459,5 +459,49 @@ class CMBRAPIController extends Controller return $res->getReturnResponse(); } + public function completeJobOrder(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->completeJobOrder($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function setActiveJobOrder(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->setActiveJobOrder($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/Ramcar/CMBJOEventType.php b/src/Ramcar/CMBJOEventType.php index 63d48610..b789ad08 100644 --- a/src/Ramcar/CMBJOEventType.php +++ b/src/Ramcar/CMBJOEventType.php @@ -14,7 +14,8 @@ class CMBJOEventType extends NameValue const RIDER_ACCEPT = 'accept'; const RIDER_IN_TRANSIT = 'rider_in_transit'; const RIDER_ARRIVE = 'arrive'; - const RIDER_START = 'rider_start'; + const RIDER_START = 'rider_start'; + const RIDER_COMPLETE = 'rider_complete'; const RIDER_EDIT = 'rider_edit'; const COLLECTION = [ @@ -28,7 +29,8 @@ class CMBJOEventType extends NameValue 'accept' => 'Rider Accept', 'rider_in_transit' => 'Rider in Transit', 'arrive' => 'Rider Arrive', - 'start' => 'Rider Start', + 'rider_start' => 'Rider Start', + 'rider_complete' => 'Rider Complete', 'rider_edit' => 'Rider Edit', ]; } diff --git a/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php b/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php index d7cd6629..34376d10 100644 --- a/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php +++ b/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php @@ -1276,6 +1276,85 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface return $data; } + public function completeJobOrder(Request $req) + { + $required_params = ['jo_id']; + $data = $this->checkJO($req, $required_params, $jo); + if (isset($data['error'])) + return $data; + + // add event log + $rider = $this->session->getRider(); + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(CMBJOEventType::RIDER_COMPLETE) + ->setJobOrder($jo) + ->setRider($rider); + $this->em->persist($event); + + $this->em->flush(); + + return $data; + } + + public function setActiveJobOrder(Request $req) + { + $required_params = [ + 'jo_id' + ]; + $data = $this->checkParamsAndKey($req, $required_params); + if (isset($data['error'])) + return $data; + + // are we logged in? + if (!$this->session->hasRider()) + { + $data = [ + 'error' => 'No logged in rider.' + ]; + return $data; + } + + $rider = $this->session->getRider(); + + // get jo + $jo_id = $req->request->get('jo_id'); + + $jo = $this->em->getRepository(JobOrder::class)->find($jo_id); + if ($jo == null) + { + $data = [ + 'job_order' => null + ]; + } + else + { + if ($jo->getRider() == null) + { + $data = [ + 'error' => 'Job order selected has no rider assigned.' + ]; + return $data; + } + + // check if rider is assigned to JO + if ($rider->getID() != $jo->getRider()->getID()) + { + $data = [ + 'error' => 'Job order selected is not assigned to rider.' + ]; + return $data; + } + + $rider->setActiveJobOrder($jo); + + $this->em->persist($rider); + $this->em->flush(); + } + + return $data; + } + protected function checkMissingParameters(Request $req, $params = []) { $missing = [];