diff --git a/config/routes/rider_api.yaml b/config/routes/rider_api.yaml index ece4671e..4cf98d93 100644 --- a/config/routes/rider_api.yaml +++ b/config/routes/rider_api.yaml @@ -32,10 +32,10 @@ rapi_jo_cancel: rapi_arrive: path: /rapi/arrive - controller: App\Controller\RAPIController::cancelJobOrder + controller: App\Controller\RAPIController::arrive methods: [POST] rapi_payment: path: /rapi/payment - controller: App\Controller\RAPIController::cancelJobOrder + controller: App\Controller\RAPIController::payment methods: [POST] diff --git a/src/Controller/RAPIController.php b/src/Controller/RAPIController.php index 41b37432..4dab01ff 100644 --- a/src/Controller/RAPIController.php +++ b/src/Controller/RAPIController.php @@ -349,7 +349,105 @@ class RAPIController extends Controller return $res->getReturnResponse(); } - public function setStatus(Request $req) + protected function checkJO(Request $req, $required_params) { + // set jo status to in transit + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res; + + // are we logged in? + if (!$this->session->hasRider()) + { + $res->setError(true) + ->setErrorMessage('No logged in rider.'); + return $res; + } + + $rider = $this->session->getRider(); + + // check if we have an active JO + $jo = $rider->getActiveJobOrder(); + if ($jo == null) + { + $res->setError(true) + ->setErrorMessage('No active job order.'); + return $res; + } + + // check if the jo_id sent is the same as our active jo + if ($req->request->get('jo_id') != $jo->getID()) + { + $res->setError(true) + ->setErrorMessage('Job order selected is not active job order.'); + return $res; + } + + return $res; + } + + public function acceptJobOrder(Request $req) + { + $required_params = ['jo_id']; + $res = $this->checkJO($req, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // TODO: refactor this into a jo handler class, so we don't have to repeat for control center + + // set jo status to in transit + $jo->setStatus(JOStatus::IN_TRANSIT); + + // TODO: send mqtt event + + // TODO: add event + + return $res->getReturnResponse(); + } + + public function cancelJobOrder(Request $req) + { + $required_params = ['jo_id']; + $res = $this->checkJO($req, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // TODO: refactor this into a jo handler class, so we don't have to repeat for control center + + // set jo status to cancelled + $jo->setStatus(JOStatus::CANCELLED); + + // TODO: send mqtt event + + // TODO: add event + + return $res->getReturnResponse(); + } + + public function arrive(Request $req) + { + $required_params = ['jo_id']; + $res = $this->checkJO($req, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // 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); + + // TODO: send mqtt event + + // TODO: add event + + return $res->getReturnResponse(); + } + + public function payment(Request $req) + { + // set invoice to paid + + // set jo status to fulfilled } }