Resolve "Capi call for compatible batteries" #1568
3 changed files with 174 additions and 0 deletions
|
|
@ -69,3 +69,8 @@ access_keys:
|
|||
acls:
|
||||
- id: dealer.list
|
||||
label: List
|
||||
- id: compatibility
|
||||
label: Vehicle Battery Compatibility Access
|
||||
acls:
|
||||
- id: compatibility.list
|
||||
label: List
|
||||
|
|
|
|||
|
|
@ -184,3 +184,9 @@ capi_dealer_list:
|
|||
path: /capi/dealers
|
||||
controller: App\Controller\CAPI\DealerController::getAll
|
||||
methods: [GET]
|
||||
|
||||
# vehicle battery
|
||||
capi_vehicle_battery_list:
|
||||
path: /capi/vehicle_battery
|
||||
controller: App\Controller\CAPI\CompatibilityChartController::getVehicleBatteryData
|
||||
methods: [GET]
|
||||
|
|
|
|||
163
src/Controller/CAPI/CompatibilityChartController.php
Normal file
163
src/Controller/CAPI/CompatibilityChartController.php
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller\CAPI;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Doctrine\ORM\Query;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Catalyst\APIBundle\Controller\APIController;
|
||||
use Catalyst\APIBundle\Response\APIResponse;
|
||||
|
||||
use App\Entity\VehicleManufacturer;
|
||||
use App\Entity\Vehicle;
|
||||
use App\Entity\BatteryManufacturer;
|
||||
use App\Entity\BatteryModel;
|
||||
use App\Entity\BatterySize;
|
||||
use App\Entity\Battery;
|
||||
|
||||
use Catalyst\APIBundle\Access\Generator as ACLGenerator;
|
||||
|
||||
class CompatibilityChartController extends APIController
|
||||
{
|
||||
protected $acl_gen;
|
||||
|
||||
public function __construct(ACLGenerator $acl_gen)
|
||||
{
|
||||
$this->acl_gen = $acl_gen;
|
||||
}
|
||||
|
||||
public function getVehicleBatteryData(EntityManagerInterface $em)
|
||||
{
|
||||
$this->denyAccessUnlessGranted('compatibility.list', null, 'No access.');
|
||||
|
||||
// get all vehicle manufacturer data
|
||||
$vmfg_results = $em->getRepository(VehicleManufacturer::class)->findBy([], ['name' => 'ASC']);
|
||||
|
||||
// get all vehicle data
|
||||
$vmake_results = $em->getRepository(Vehicle::class)->findBy([], ['make' => 'ASC']);
|
||||
|
||||
// get all battery manufacturer data
|
||||
$bmfg_results = $em->getRepository(BatteryManufacturer::class)->findBy([], ['name' => 'ASC']);
|
||||
|
||||
// get all battery model data
|
||||
$bmodel_results = $em->getRepository(BatteryModel::class)->findBy([], ['name' => 'ASC']);
|
||||
|
||||
// get all battery size data
|
||||
$bsize_results = $em->getRepository(BatterySize::class)->findBy([], ['name' => 'ASC']);
|
||||
|
||||
// get all battery data
|
||||
$batt_results = $em->getRepository(Battery::class)->findBy([], ['id' => 'ASC']);
|
||||
|
||||
// process the data retrieved
|
||||
$vmfgs = [];
|
||||
$vmakes = [];
|
||||
$bmfgs = [];
|
||||
$bmodels = [];
|
||||
$bsizes = [];
|
||||
$batteries = [];
|
||||
$vehicle_battery_comp = [];
|
||||
|
||||
// vehicle manufacturer data
|
||||
foreach ($vmfg_results as $vmfg)
|
||||
{
|
||||
$vmfgs[] = [
|
||||
'id' => $vmfg->getID(),
|
||||
'name' => $vmfg->getName(),
|
||||
'flag_mobile' => $vmfg->shouldDisplayMobile(),
|
||||
];
|
||||
}
|
||||
// vehicle data
|
||||
foreach ($vmake_results as $vehicle)
|
||||
{
|
||||
$vmakes[] = [
|
||||
'id' => $vehicle->getID(),
|
||||
'mfg_id' => $vehicle->getManufacturer()->getID(),
|
||||
'make' => $vehicle->getMake(),
|
||||
'model_year_from' => $vehicle->getModelYearFrom(),
|
||||
'model_year_to' => $vehicle->getModelYearTo(),
|
||||
'flag_mobile' => $vehicle->shouldDisplayMobile(),
|
||||
];
|
||||
}
|
||||
// battery manufacturer data
|
||||
foreach ($bmfg_results as $bmfg)
|
||||
{
|
||||
$bmfgs[] = [
|
||||
'id' => $bmfg->getID(),
|
||||
'name' => $bmfg->getName(),
|
||||
];
|
||||
}
|
||||
// battery model data
|
||||
foreach ($bmodel_results as $bmodel)
|
||||
{
|
||||
$bmodels[] = [
|
||||
'id' => $bmodel->getID(),
|
||||
'name' => $bmodel->getName(),
|
||||
];
|
||||
}
|
||||
// battery size data
|
||||
foreach ($bsize_results as $bsize)
|
||||
{
|
||||
$bsizes[] = [
|
||||
'id' => $bsize->getID(),
|
||||
'name' => $bsize->getName(),
|
||||
'tip_motolite' => $bsize->getTIPriceMotolite(),
|
||||
'tip_premium' => $bsize->getTIPricePremium(),
|
||||
'tip_other' => $bsize->getTIPriceOther(),
|
||||
'tip_lazada' => $bsize->getTIPriceLazada(),
|
||||
];
|
||||
}
|
||||
// battery data
|
||||
foreach ($batt_results as $batt)
|
||||
{
|
||||
$batteries[] = [
|
||||
'id' => $batt->getID(),
|
||||
'mfg_id' => $batt->getManufacturer()->getID(),
|
||||
'model_id' => $batt->getModel()->getID(),
|
||||
'size_id' => $batt->getSize()->getID(),
|
||||
'prod_code' => $batt->getProductCode(),
|
||||
'sap_code' => $batt->getSAPCode(),
|
||||
'reserve_capacity' => $batt->getReserveCapacity(),
|
||||
'length' => $batt->getLength(),
|
||||
'width' => $batt->getWidth(),
|
||||
'height' => $batt->getHeight(),
|
||||
'total_height' => $batt->getTotalHeight(),
|
||||
'date_create' => $batt->getDateCreate(),
|
||||
'date_update' => $batt->getDateUpdate(),
|
||||
'price' => $batt->getSellingPrice(),
|
||||
'wty_private' => $batt->getWarrantyPrivate(),
|
||||
'wty_commercial' => $batt->getWarrantyCommercial(),
|
||||
'wty_tnv' => $batt->getWarrantyTnv(),
|
||||
];
|
||||
}
|
||||
// vehicle battery compatibility data
|
||||
foreach ($vmake_results as $vmake)
|
||||
{
|
||||
// get vehicle's compatible batteries
|
||||
$batts = $vmake->getBatteries();
|
||||
$comp_batteries = [];
|
||||
foreach ($batts as $batt)
|
||||
{
|
||||
$comp_batteries[] = [
|
||||
'id' => $batt->getID(),
|
||||
];
|
||||
}
|
||||
|
||||
$vehicle_battery_comp[] = [
|
||||
'vehicle_id' => $vmake->getID(),
|
||||
'batteries' => $comp_batteries,
|
||||
];
|
||||
}
|
||||
|
||||
$data = [
|
||||
'vehicle_manufacturers' => $vmfgs,
|
||||
'vehicle_makes' => $vmakes,
|
||||
'battery_manufacturers' => $bmfgs,
|
||||
'battery_models' => $bmodels,
|
||||
'battery_sizes' => $bsizes,
|
||||
'batteries' => $batteries,
|
||||
'vehicle_battery_compatibility' => $vehicle_battery_comp,
|
||||
];
|
||||
return new APIResponse(true, 'Vehicles and batteries loaded.', $data);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue