Add controller to return vehicle, battery, and vehicle battery compatibility data. #645
This commit is contained in:
parent
e986d07f70
commit
4ab10b9002
1 changed files with 164 additions and 0 deletions
164
src/Controller/CAPI/CompatibilityChartController.php
Normal file
164
src/Controller/CAPI/CompatibilityChartController.php
Normal file
|
|
@ -0,0 +1,164 @@
|
||||||
|
<?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(),
|
||||||
|
'image_file' => $batt->getImageFile(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
// 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