From 219d5c09d31408d49cfb59c6cc57f27b1df58eff Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Sat, 10 Aug 2024 05:26:04 +0800 Subject: [PATCH] Add endpoint for subscription paymongo public key #799 --- config/routes/apiv2.yaml | 5 +++ config/services.yaml | 1 + .../CustomerAppAPI/SubscriptionController.php | 34 +++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/config/routes/apiv2.yaml b/config/routes/apiv2.yaml index 50c18fb8..1ceba391 100644 --- a/config/routes/apiv2.yaml +++ b/config/routes/apiv2.yaml @@ -324,4 +324,9 @@ apiv2_static_content: apiv2_subscription_fee: path: /apiv2/subscription/fee controller: App\Controller\CustomerAppAPI\SubscriptionController::getRecurringFee + methods: [GET] + +apiv2_subscription_paymongo_public_key: + path: /apiv2/subscription/ppk + controller: App\Controller\CustomerAppAPI\SubscriptionController::getPaymongoPublicKey methods: [GET] \ No newline at end of file diff --git a/config/services.yaml b/config/services.yaml index 0430a9d6..093ecf2d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -18,6 +18,7 @@ parameters: insurance_premiums_banner_url: "%env(INSURANCE_PREMIUMS_BANNER_URL)%" enabled_hub_filters: "%env(ENABLED_HUB_FILTERS)%" subscription_recurring_fee: "%env(SUBSCRIPTION_RECURRING_FEE)%" + subscription_paymongo_public_key: "%env(SUBSCRIPTION_PAYMONGO_PUBLIC_KEY)%" services: # default configuration for services in *this* file diff --git a/src/Controller/CustomerAppAPI/SubscriptionController.php b/src/Controller/CustomerAppAPI/SubscriptionController.php index 1f97af24..b86b410d 100644 --- a/src/Controller/CustomerAppAPI/SubscriptionController.php +++ b/src/Controller/CustomerAppAPI/SubscriptionController.php @@ -5,9 +5,39 @@ namespace App\Controller\CustomerAppAPI; use Symfony\Component\HttpFoundation\Request; use Catalyst\ApiBundle\Component\Response as ApiResponse; +use App\Entity\CustomerVehicle; + class SubscriptionController extends ApiController { - public function getRecurringFee(Request $req) + public function getRecurringFee(Request $req, $cv_id) + { + // check requirements + $validity = $this->validateRequest($req); + + if (!$validity['is_valid']) { + return new ApiResponse(false, $validity['error']); + } + + // get customer vehicle + $cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id); + + // check if it exists + if ($cv == null) { + return new ApiResponse(false, 'Vehicle does not exist.'); + } + + // check if it's owned by customer + if ($cv->getCustomer()->getID() != $this->session->getCustomer()->getID()) { + return new ApiResponse(false, 'Invalid vehicle.'); + } + + // response + return new ApiResponse(true, '', [ + 'amount' => $this->getParameter('subscription_recurring_fee'), + ]); + } + + public function getPayMongoPublicKey(Request $req) { // check requirements $validity = $this->validateRequest($req); @@ -18,7 +48,7 @@ class SubscriptionController extends ApiController // response return new ApiResponse(true, '', [ - 'amount' => $this->getParameter('subscription_recurring_fee'), + 'content' => $this->getParameter('subscription_paymongo_public_key'), ]); } }