Update subscription fee endpoint to be specific to each vehicle model #799

This commit is contained in:
Ramon Gutierrez 2024-08-11 15:05:20 +08:00
parent b67f960055
commit 4f5560f6f7
8 changed files with 26 additions and 27 deletions

View file

@ -322,7 +322,7 @@ apiv2_static_content:
# subscription # subscription
apiv2_subscription_fee: apiv2_subscription_fee:
path: /apiv2/subscription/fee path: /apiv2/subscription/{vid}/fee
controller: App\Controller\CustomerAppAPI\SubscriptionController::getRecurringFee controller: App\Controller\CustomerAppAPI\SubscriptionController::getRecurringFee
methods: [GET] methods: [GET]

View file

@ -17,7 +17,6 @@ parameters:
ios_app_version: "%env(IOS_APP_VERSION)%" ios_app_version: "%env(IOS_APP_VERSION)%"
insurance_premiums_banner_url: "%env(INSURANCE_PREMIUMS_BANNER_URL)%" insurance_premiums_banner_url: "%env(INSURANCE_PREMIUMS_BANNER_URL)%"
enabled_hub_filters: "%env(ENABLED_HUB_FILTERS)%" enabled_hub_filters: "%env(ENABLED_HUB_FILTERS)%"
subscription_recurring_fee: "%env(SUBSCRIPTION_RECURRING_FEE)%"
subscription_paymongo_public_key: "%env(SUBSCRIPTION_PAYMONGO_PUBLIC_KEY)%" subscription_paymongo_public_key: "%env(SUBSCRIPTION_PAYMONGO_PUBLIC_KEY)%"
services: services:

View file

@ -131,7 +131,7 @@ class BatterySizeController extends Controller
->setTIPricePremium($req->request->get('tip_premium')) ->setTIPricePremium($req->request->get('tip_premium'))
->setTIPriceOther($req->request->get('tip_other')) ->setTIPriceOther($req->request->get('tip_other'))
->setTIPriceLazada($req->request->get('tip_lazada')) ->setTIPriceLazada($req->request->get('tip_lazada'))
->setSubMSRP($req->request->get('sub_msrp')); ->setSubRecurringFee($req->request->get('sub_recurring_fee'));
} }
public function addSubmit(Request $req, ValidatorInterface $validator) public function addSubmit(Request $req, ValidatorInterface $validator)

View file

@ -5,11 +5,11 @@ namespace App\Controller\CustomerAppAPI;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Catalyst\ApiBundle\Component\Response as ApiResponse; use Catalyst\ApiBundle\Component\Response as ApiResponse;
use App\Entity\CustomerVehicle; use App\Entity\Vehicle;
class SubscriptionController extends ApiController class SubscriptionController extends ApiController
{ {
public function getRecurringFee(Request $req, $cv_id) public function getRecurringFee(Request $req, $vid)
{ {
// check requirements // check requirements
$validity = $this->validateRequest($req); $validity = $this->validateRequest($req);
@ -18,22 +18,22 @@ class SubscriptionController extends ApiController
return new ApiResponse(false, $validity['error']); return new ApiResponse(false, $validity['error']);
} }
// get customer vehicle // get vehicle
$cv = $this->em->getRepository(CustomerVehicle::class)->find($cv_id); $vehicle = $this->em->getRepository(Vehicle::class)->find($vid);
if ($vehicle == null) {
// check if it exists return new ApiResponse(false, 'Invalid vehicle.');
if ($cv == null) {
return new ApiResponse(false, 'Vehicle does not exist.');
} }
// check if it's owned by customer // get compatible batteries
if ($cv->getCustomer()->getID() != $this->session->getCustomer()->getID()) { $batts = $vehicle->getActiveBatteries();
return new ApiResponse(false, 'Invalid vehicle.');
if (!empty($batts)) {
$fee = $batts[0]->getSize()->getSubRecurringFee() ?? 0;
} }
// response // response
return new ApiResponse(true, '', [ return new ApiResponse(true, '', [
'amount' => $this->getParameter('subscription_recurring_fee'), 'amount' => $fee,
]); ]);
} }

View file

@ -393,7 +393,7 @@ class VehicleController extends ApiController
// TODO: possibly refactor this bit // TODO: possibly refactor this bit
// if no valid previous JO is found, base the trade-in value on recommended batteries // if no valid previous JO is found, base the trade-in value on recommended batteries
if (!$previous_jo_found) { if (!$previous_jo_found) {
$comp_batteries = $cv->getVehicle()->getBatteries(); $comp_batteries = $cv->getVehicle()->getActiveBatteries();
// get the lowest trade-in value from the list of batteries // get the lowest trade-in value from the list of batteries
if (!empty($comp_batteries)) { if (!empty($comp_batteries)) {

View file

@ -61,7 +61,7 @@ class BatterySize
/** /**
* @ORM\Column(type="decimal", precision=7, scale=2, nullable=true) * @ORM\Column(type="decimal", precision=7, scale=2, nullable=true)
*/ */
protected $sub_msrp; protected $sub_recurring_fee;
public function __construct() public function __construct()
{ {
@ -70,7 +70,7 @@ class BatterySize
$this->tip_premium = 0; $this->tip_premium = 0;
$this->tip_other = 0; $this->tip_other = 0;
$this->tip_lazada = 0; $this->tip_lazada = 0;
$this->sub_msrp = 0; $this->sub_recurring_fee = 0;
} }
public function getID() public function getID()
@ -156,14 +156,14 @@ class BatterySize
return $this->tip_lazada; return $this->tip_lazada;
} }
public function setSubMSRP($sub_msrp) public function setSubRecurringFee($sub_recurring_fee)
{ {
$this->sub_msrp = $sub_msrp; $this->sub_recurring_fee = $sub_recurring_fee;
return $this; return $this;
} }
public function getSubMSRP() public function getSubRecurringFee()
{ {
return $this->sub_msrp; return $this->sub_recurring_fee;
} }
} }

View file

@ -81,12 +81,12 @@
</div> </div>
</div> </div>
<div class="form-group m-form__group row no-border"> <div class="form-group m-form__group row no-border">
<label class="col-lg-3 col-form-label" data-field="sub_msrp"> <label class="col-lg-3 col-form-label" data-field="sub_recurring_fee">
{% trans %}battery_Size_sub_msrp{% endtrans %} {% trans %}battery_Size_sub_recurring_fee{% endtrans %}
</label> </label>
<div class="col-lg-9"> <div class="col-lg-9">
<input type="text" name="sub_msrp" class="form-control m-input" value="{{ obj.getSubMSRP }}"> <input type="text" name="sub_recurring_fee" class="form-control m-input" value="{{ obj.getSubRecurringFee }}">
<div class="form-control-feedback hide" data-field="sub_msrp"></div> <div class="form-control-feedback hide" data-field="sub_recurring_fee"></div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -9,7 +9,7 @@ battery_size_tradein_brand: Trade-in Motolite
battery_size_tradein_premium: Trade-in Premium battery_size_tradein_premium: Trade-in Premium
battery_size_tradein_other: Trade-in Other battery_size_tradein_other: Trade-in Other
battery_size_tradein_lazada: Trade-in Lazada battery_size_tradein_lazada: Trade-in Lazada
battery_Size_sub_msrp: Subscription MSRP battery_Size_sub_recurring_fee: Subscription Recurring Fee
add_cust_vehicle_battery_info: This vehicle is using a Motolite battery add_cust_vehicle_battery_info: This vehicle is using a Motolite battery
jo_title_pdf: Motolite Res-Q Job Order jo_title_pdf: Motolite Res-Q Job Order
country_code_prefix: '+63' country_code_prefix: '+63'