Resolve "Capi call for compatible batteries" #1568

Open
korina.cordero wants to merge 3 commits from 645-capi-call-for-compatible-batteries into master
3 changed files with 174 additions and 0 deletions

View file

@ -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

View file

@ -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]

View 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);
}
}