From ef626729c9fb985c4fc479c7d3b82d48c92dbc9e Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Wed, 30 Oct 2024 04:41:41 +0800 Subject: [PATCH] Fix API output for active subscriptions #799 --- .../CustomerAppAPI/VehicleController.php | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/Controller/CustomerAppAPI/VehicleController.php b/src/Controller/CustomerAppAPI/VehicleController.php index 1e1710ff..b9549494 100644 --- a/src/Controller/CustomerAppAPI/VehicleController.php +++ b/src/Controller/CustomerAppAPI/VehicleController.php @@ -141,7 +141,7 @@ class VehicleController extends ApiController // response return new ApiResponse(true, '', [ - 'vehicle' => $this->generateVehicleInfo($cv, true, true, $paymongo, $params), + 'vehicle' => $this->generateVehicleInfo($paymongo, $params, $cv, true, true), ]); } @@ -233,7 +233,7 @@ class VehicleController extends ApiController // only get the customer's vehicles whose flag_active is true $cvs = $this->em->getRepository(CustomerVehicle::class)->findBy(['flag_active' => true, 'customer' => $cust]); foreach ($cvs as $cv) { - $cv_list[] = $this->generateVehicleInfo($cv, true, true, $paymongo, $params); + $cv_list[] = $this->generateVehicleInfo($paymongo, $params, $cv, true, true); } // response @@ -422,7 +422,7 @@ class VehicleController extends ApiController ]; } - protected function generateVehicleInfo(CustomerVehicle $cv, $include_insurance = false, $include_active_sub = false, PayMongoConnector $paymongo, ParameterBagInterface $params) + protected function generateVehicleInfo(PayMongoConnector $paymongo, ParameterBagInterface $params, CustomerVehicle $cv, $include_insurance = false, $include_active_sub = false) { $battery_id = null; if ($cv->getCurrentBattery() != null) @@ -501,6 +501,7 @@ class VehicleController extends ApiController break; } + // build insurance row $insurance = [ 'id' => $iobj->getID(), 'ext_transaction_id' => $iobj->getExtTransactionId(), @@ -510,12 +511,10 @@ class VehicleController extends ApiController 'transaction_status' => $gt->getStatus(), 'premium_amount' => (string)bcdiv($gt->getAmount(), 100), // NOTE: hard expressing as string so it's consistent 'date_submit' => $iobj->getDateSubmit()->format('Y-m-d H:i:s'), - 'date_complete' => $date_complete ? $date_complete->format('Y-m-d H:i:s') : null, - 'date_expire' => $date_expire ? $date_expire->format('Y-m-d H:i:s') : null, + 'date_complete' => !empty($date_complete) ? $date_complete->format('Y-m-d H:i:s') : null, + 'date_expire' => !empty($date_expire) ? $date_expire->format('Y-m-d H:i:s') : null, + 'changelog' => $iobj->getMetadata()['changes'] ?? [], ]; - - // get information changelog - $insurance['changelog'] = $iobj->getMetadata()['changes'] ?? []; } $row['latest_insurance'] = $insurance; @@ -525,8 +524,17 @@ class VehicleController extends ApiController if ($include_active_sub) { $active_sub = null; $sobj = $cv->getLatestSubscription(); - if (!empty($sobj) && $sobj->getStatus() == SubscriptionStatus::ACTIVE) { - $active_sub = $sobj; + + if (!empty($sobj)) { + $date_cancel = $sobj->getDateCancel(); + // build subscription row + $active_sub = [ + 'email' => $sobj->getEmail(), + 'date_start' => $sobj->getDateStart()->format('Y-m-d H:i:s'), + 'date_end' => $sobj->getDateEnd()->format('Y-m-d H:i:s'), + 'date_cancel' => !empty($date_cancel) ? $date_cancel->format('Y-m-d H:i:s') : null, + 'status' => $sobj->getStatus(), + ]; } $row['active_subscription'] = $active_sub;