diff --git a/config/api_acl.yaml b/config/api_acl.yaml index ae1a9bfb..5adb73a4 100644 --- a/config/api_acl.yaml +++ b/config/api_acl.yaml @@ -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 diff --git a/config/routes/capi.yaml b/config/routes/capi.yaml index 472da5c2..28c4c40a 100644 --- a/config/routes/capi.yaml +++ b/config/routes/capi.yaml @@ -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] diff --git a/src/Controller/CAPI/CompatibilityChartController.php b/src/Controller/CAPI/CompatibilityChartController.php new file mode 100644 index 00000000..7d409efa --- /dev/null +++ b/src/Controller/CAPI/CompatibilityChartController.php @@ -0,0 +1,163 @@ +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); + } +}