From dbdde5cdde2f410ca5021da9f9a6b33dcd8ca420 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 2 Jun 2020 03:40:55 +0000 Subject: [PATCH] Change which flag is set when rider logs in and logs out. Add goOnline and goOffline API calls. #421 --- config/routes/cmb_rider_api.yaml | 11 +++++ src/Controller/CMBRAPIController.php | 43 +++++++++++++++++++ .../RiderAPIHandler/CMBRiderAPIHandler.php | 42 +++++++++++++++++- 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/config/routes/cmb_rider_api.yaml b/config/routes/cmb_rider_api.yaml index 44e01b79..4ea959ed 100644 --- a/config/routes/cmb_rider_api.yaml +++ b/config/routes/cmb_rider_api.yaml @@ -84,3 +84,14 @@ cmb_rapi_invoice_generate: path: /cmbrapi/generateinvoice controller: App\Controller\CMBRAPIController::generateInvoice methods: [GET] + +cmb_rapi_online: + path: /cmbrapi/online + controller: App\Controller\CMBRAPIController::goOnline + methods: [POST] + +cmb_rapi_offline: + path: /cmbrapi/offline + controller: App\Controller\CMBRAPIController::goOffline + methods: [POST] + diff --git a/src/Controller/CMBRAPIController.php b/src/Controller/CMBRAPIController.php index c92f7d4c..adfe89a2 100644 --- a/src/Controller/CMBRAPIController.php +++ b/src/Controller/CMBRAPIController.php @@ -393,5 +393,48 @@ class CMBRAPIController extends Controller } + public function goOnline(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->goOnline($req); + + if (isset($data['error'])) + { + $message = $data['error']; + + $res->setError(true) + ->setErrorMessage($message); + } + else + { + $res->setData($data); + } + + // response + return $res->getReturnResponse(); + } + + public function goOffline(Request $req, RiderAPIHandlerInterface $rapi_handler) + { + $res = new APIResult(); + + $data = $rapi_handler->goOffline($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/Service/RiderAPIHandler/CMBRiderAPIHandler.php b/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php index 09982977..8b60e412 100644 --- a/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php +++ b/src/Service/RiderAPIHandler/CMBRiderAPIHandler.php @@ -36,6 +36,8 @@ use DateTime; class CMBRiderAPIHandler implements RiderAPIHandlerInterface { + // NOTE: Rider's constructor sets flag_available and flag_active to true, by default. + protected $em; protected $redis; protected $ef; @@ -177,7 +179,8 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface // assign rider to session $this->session->setRider($rider); - $rider->setAvailable(true); + //$rider->setAvailable(true); + $rider->setActive(true); $rider_id = $rider->getID(); // cache rider location (default to hub) @@ -229,7 +232,9 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface // make rider unavailable $rider = $this->session->getRider(); + $rider->setAvailable(false); + $rider->setActive(false); // remove from cache $this->rcache->removeActiveRider($rider->getID()); @@ -244,6 +249,41 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface return $data; } + public function goOnline(Request $req) + { + $required_params = []; + $data = $this->checkParamsAndKey($req, $required_params); + if (isset($data['error'])) + return $data; + + // set rider to available to take on JOs + $rider = $this->session->getRider(); + + $rider->setAvailable(true); + + $this->em->flush(); + + return $data; + } + + public function goOffline(Request $req) + { + $required_params = []; + $data = $this->checkParamsAndKey($req, $required_params); + if (isset($data['error'])) + return $data; + + // set rider to unavailable to take on JOs + $rider = $this->session->getRider(); + + $rider->setAvailable(false); + + $this->em->flush(); + + return $data; + + } + public function getJobOrderHistory(Request $req) { $required_params = [];