Fix API output for active subscriptions #799

This commit is contained in:
Ramon Gutierrez 2024-10-30 04:41:41 +08:00
parent 00697414b0
commit ef626729c9

View file

@ -141,7 +141,7 @@ class VehicleController extends ApiController
// response // response
return new ApiResponse(true, '', [ 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 // only get the customer's vehicles whose flag_active is true
$cvs = $this->em->getRepository(CustomerVehicle::class)->findBy(['flag_active' => true, 'customer' => $cust]); $cvs = $this->em->getRepository(CustomerVehicle::class)->findBy(['flag_active' => true, 'customer' => $cust]);
foreach ($cvs as $cv) { foreach ($cvs as $cv) {
$cv_list[] = $this->generateVehicleInfo($cv, true, true, $paymongo, $params); $cv_list[] = $this->generateVehicleInfo($paymongo, $params, $cv, true, true);
} }
// response // 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; $battery_id = null;
if ($cv->getCurrentBattery() != null) if ($cv->getCurrentBattery() != null)
@ -501,6 +501,7 @@ class VehicleController extends ApiController
break; break;
} }
// build insurance row
$insurance = [ $insurance = [
'id' => $iobj->getID(), 'id' => $iobj->getID(),
'ext_transaction_id' => $iobj->getExtTransactionId(), 'ext_transaction_id' => $iobj->getExtTransactionId(),
@ -510,12 +511,10 @@ class VehicleController extends ApiController
'transaction_status' => $gt->getStatus(), 'transaction_status' => $gt->getStatus(),
'premium_amount' => (string)bcdiv($gt->getAmount(), 100), // NOTE: hard expressing as string so it's consistent '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_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_complete' => !empty($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_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; $row['latest_insurance'] = $insurance;
@ -525,8 +524,17 @@ class VehicleController extends ApiController
if ($include_active_sub) { if ($include_active_sub) {
$active_sub = null; $active_sub = null;
$sobj = $cv->getLatestSubscription(); $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; $row['active_subscription'] = $active_sub;