diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 50d6f3a5..e11e0c20 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -129,3 +129,8 @@ api_service_list: path: /api/services controller: App\Controller\APIController:listServices methods: [GET] + +api_partner_info: + path: /api/partner/{pid} + controller: App\Controller\APIController:getPartnerInformation + methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index ace7e540..72016ddc 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -39,6 +39,8 @@ use App\Entity\Battery; use App\Entity\RiderRating; use App\Entity\JOEvent; use App\Entity\Service; +use App\Entity\Partner; +use App\Entity\Review; use DateTime; use Exception; @@ -1853,4 +1855,54 @@ class APIController extends Controller return $res->getReturnResponse(); } + + public function getPartnerInformation(Request $req, $pid) + { + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // get partner + $partner = $em->getRepository(Partner::class)->findOneBy(['id' => $pid]); + if ($partner == null) + { + $res->setError(true) + ->setErrorMessage('No partner found.'); + return $res->getReturnResponse(); + } + + // get reviews for partner + $reviews = $em->getRepository(Review::class)->findBy(['partner' => $partner]); + $rev = []; + if (!empty($reviews)) + { + foreach($reviews as $review) + { + $rev[] = [ + 'id' => $review->getID(), + 'rating' => $review->getRating(), + 'message' => $review->getMessage(), + 'date_create' => $review->getDateCreate()->format("d M Y g:i A"), + 'mobile_session' => $review->getMobileSession()->getID(), + ]; + } + } + + $data['partner'] = [ + 'id' => $partner->getID(), + 'name' => $partner->getName(), + 'branch' => $partner->getBranch(), + 'address' => $partner->getAddress(), + 'contact_nums' => $partner->getContactNumbers(), + 'time_open' => $partner->getTimeOpen()->format("d M Y g:i A"), + 'time_close' => $partner->getTimeClose()->format("d M Y g:i A"), + 'reviews' => $rev, + ]; + + $res->setData($data); + + return $res->getReturnResponse(); + } }