diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 5e04aea3..f55b0d83 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -136,7 +136,7 @@ api_service_list: methods: [GET] api_partner_info: - path: /api/partner/{pid} + path: /api/partners/{pid} controller: App\Controller\APIController:getPartnerInformation methods: [GET] @@ -145,3 +145,7 @@ api_partner: controller: App\Controller\APIController:getClosestPartners methods: [GET] +api_partner_review: + path: /api/partners/{pid}/review + controller: App\Controller\APIController:reviewPartner + methods: [POST] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 953a0edd..f65f0c23 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -5,6 +5,7 @@ namespace App\Controller; use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Doctrine\DBAL\DBALException; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; @@ -2001,7 +2002,7 @@ class APIController extends Controller 'rating' => $review->getRating(), 'message' => $review->getMessage(), 'date_create' => $review->getDateCreate()->format("d M Y g:i A"), - 'mobile_session' => $review->getMobileSession()->getID(), + // 'mobile_session' => $review->getMobileSession()->getID(), ]; } } @@ -2014,6 +2015,8 @@ class APIController extends Controller 'contact_nums' => $partner->getContactNumbers(), 'time_open' => $partner->getTimeOpen()->format("g:i A"), 'time_close' => $partner->getTimeClose()->format("g:i A"), + 'longitude' => $partner->getCoordinates()->getLongitude(), + 'latitude' => $partner->getCoordinates()->getLatitude(), 'reviews' => $rev, ]; @@ -2051,10 +2054,10 @@ class APIController extends Controller $result = $query->getResult(); $data = []; + $partners = []; foreach($result as $row) { - $partner = []; - $partner[] = [ + $partners[] = [ 'id' => $row[0]->getID(), 'name' => $row[0]->getName(), 'branch' => $row[0]->getBranch(), @@ -2062,14 +2065,55 @@ class APIController extends Controller 'contact_nums' => $row[0]->getContactNumbers(), 'time_open' => $row[0]->getTimeOpen()->format("g:i A"), 'time_close' => $row[0]->getTimeClose()->format("g:i A"), - ]; - - $data[] = [ - 'partner' => $partner, + 'longitude' => $row[0]->getCoordinates()->getLongitude(), + 'latitude' => $row[0]->getCoordinates()->getLatitude(), 'db_distance' => $row['dist'], - ]; + ]; } + $data['partners'] = $partners; + + $res->setData($data); + + return $res->getReturnResponse(); + } + + public function reviewPartner($pid, Request $req, EntityManagerInterface $em) + { + $required_params = [ + 'rating', + 'message', + ]; + + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + $rating = $req->request->get('rating'); + $msg = $req->request->get('message'); + + // TODO: check rating if 1 - 5 + + // check if partner exists + $partner = $em->getRepository(Partner::class)->find($pid); + if ($partner == null) + { + $res->setError(true) + ->setErrorMessage('No partner found.'); + return $res->getReturnResponse(); + } + + $rev = new Review(); + $rev->setRating($rating) + ->setMessage($msg) + ->setPartner($partner) + ->setMobileSession($this->session); + + // save to db + $em->persist($rev); + $em->flush(); + + $data = []; $res->setData($data); return $res->getReturnResponse(); diff --git a/src/Entity/Review.php b/src/Entity/Review.php index 57ee2c6f..9903784e 100644 --- a/src/Entity/Review.php +++ b/src/Entity/Review.php @@ -56,7 +56,7 @@ class Review { $this->date_create = new DateTime(); $this->rating = 0; - $this->comment = ""; + $this->message = ""; } public function getID()