From 6ec9f76d4dd9518542c33c57ec3610e6ec10aac8 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Wed, 21 Feb 2018 21:53:06 +0800 Subject: [PATCH] Add post rider rating API #18 --- config/routes/api.yaml | 5 +++ src/Controller/APIController.php | 58 ++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index cd710e76..242fe879 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -84,3 +84,8 @@ api_rider_status: path: /api/rider controller: App\Controller\APIController::getRiderStatus methods: [GET] + +api_rider_rating_add: + path: /api/rider_rating + controller: App\Controller\APIController::addRiderRating + methods: [POST] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index a682db06..70a22c82 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -29,6 +29,7 @@ use App\Entity\CustomerVehicle; use App\Entity\JobOrder; use App\Entity\Promo; use App\Entity\Battery; +use App\Entity\RiderRating; use DateTime; @@ -1063,4 +1064,61 @@ class APIController extends Controller return $res->getReturnResponse(); } + + public function addRiderRating(Request $req) + { + $required_params = [ + 'jo_id', + 'rating', + ]; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // get customer + $cust = $this->session->getCustomer(); + if ($cust == null) + { + $res->setError(true) + ->setErrorMessage('No customer information found'); + return $res->getReturnResponse(); + } + + // get job order + $jo_id = $req->request->get('jo_id'); + $jo = $em->getRepository(JobOrder::class)->find($jo_id); + if ($jo == null) + { + $res->setError(true) + ->setErrorMessage('No job order found'); + return $res->getReturnResponse(); + } + + // get rider + $rider = $jo->getRider(); + if ($rider == null) + { + $res->setError(true) + ->setErrorMessage('No rider found'); + return $res->getReturnResponse(); + } + + // TODO: check job order status if it's + + // add rider rating + $rating_num = $req->request->get('rating'); + $rating = new RiderRating(); + $rating->setRider($rider) + ->setCustomer($cust) + ->setJobOrder($jo) + ->setRating($rating_num); + + $em->persist($rating); + $em->flush(); + + $res->setData([]); + + return $res->getReturnResponse(); + } }