From 095159c3fe784ce866ffec09122f885c554cc7f2 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Mon, 22 Mar 2021 23:31:18 +0800 Subject: [PATCH] Add vehicle fields in warranty #540 --- config/routes/capi.yaml | 5 ++ .../CAPI/CustomerWarrantyController.php | 4 ++ src/Controller/CAPI/VehicleController.php | 29 ++++++++ src/Entity/Warranty.php | 69 +++++++++++++++++++ 4 files changed, 107 insertions(+) diff --git a/config/routes/capi.yaml b/config/routes/capi.yaml index 485c97de..856eb0ef 100644 --- a/config/routes/capi.yaml +++ b/config/routes/capi.yaml @@ -49,6 +49,11 @@ capi_vehicle_list: controller: App\Controller\CAPI\VehicleController::list methods: [GET] +capi_vehicle_by_mfg: + path: /capi/vehicle_manufacturer/{mfg_id} + controller: App\Controller\CAPI\VehicleController::getByManufacturer + methods: [GET] + # plate api diff --git a/src/Controller/CAPI/CustomerWarrantyController.php b/src/Controller/CAPI/CustomerWarrantyController.php index 5a8e87f0..70113cd8 100644 --- a/src/Controller/CAPI/CustomerWarrantyController.php +++ b/src/Controller/CAPI/CustomerWarrantyController.php @@ -249,6 +249,7 @@ class CustomerWarrantyController extends APIController $wcard_filename = $this->handlePictureUpload($warr_card, $upload_dir, $serial, 'wcard'); + /* $data = [ 'first_name' => $first_name, 'last_name' => $last_name, @@ -261,6 +262,7 @@ class CustomerWarrantyController extends APIController error_log(print_r($data, true)); error_log('updating warranty'); + */ // do actual registering $res = $this->updateWarranty($em, $req, $serial, $inv_filename, $wcard_filename); @@ -396,6 +398,8 @@ class CustomerWarrantyController extends APIController // new fields ->setOdometer($req->request->get('odometer', 0)) ->setDatePurchaseCustomer($date_pur_cust) + ->setDealerName($req->request->get('dealer_name')) + ->setDealerAddress($req->request->get('dealer_address')) ->setValidated(false); // TODO: check for date purchase and date expire diff --git a/src/Controller/CAPI/VehicleController.php b/src/Controller/CAPI/VehicleController.php index e28fbe88..02de2d8e 100644 --- a/src/Controller/CAPI/VehicleController.php +++ b/src/Controller/CAPI/VehicleController.php @@ -44,6 +44,35 @@ class VehicleController extends APIController return new APIResponse(true, 'Vehicle manufacturers loaded.', $data); } + public function getByManufacturer($mfg_id, EntityManagerInterface $em) + { + $this->denyAccessUnlessGranted('vehicle.list', null, 'No access.'); + + $mfg = $this->em->getRepository(VehicleManufacturer::class)->find($mfg_id); + + // manufacturer not found + if ($mfg == null) + { + return new APIResponse(false, 'No vehicle manufacturer found with that Id.', null, 404); + } + + // get all vehicles from manufacturer + $vehicles = $mfg->getVehicles(); + foreach($vehicles as $vehicle) + { + $make_data[] = [ + 'id' => $vehicle->getID(), + 'mfg_id' => $vehicle->getManufacturer()->getID(), + 'make' => $vehicle->getMake(), + 'model' => $vehicle->getModelYearFormatted(), + ]; + } + + // TODO: need to add manufacturer details + + return new APIResponse(true, 'Vehicles loaded.', $data); + } + public function list(EntityManagerInterface $em) { $this->denyAccessUnlessGranted('vehicle.list', null, 'No access.'); diff --git a/src/Entity/Warranty.php b/src/Entity/Warranty.php index a8da644b..d7e8e7d8 100644 --- a/src/Entity/Warranty.php +++ b/src/Entity/Warranty.php @@ -157,12 +157,37 @@ class Warranty */ protected $file_warr_card; + // vehicle + /** + * @ORM\ManyToOne(targetEntity="Vehicle") + * @ORM\JoinColumn(name="vehicle_id", referencedColumnName="id", nullable=true) + */ + protected $vehicle; + + // vehicle model year + /** + * @ORM\Column(type="string", length=10, nullable=true) + */ + protected $v_model_year; + // odometer reading /** * @ORM\Column(type="integer", nullable=true) */ protected $odometer; + // dealer name + /** + * #ORM\Column(type="string", length=80, nullable=true) + */ + protected $dealer_name; + + // dealer address + /** + * #ORM\Column(type="string", length=180, nullable=true) + */ + protected $dealer_address; + // date purchase as specified by customer // TODO: currently this does not affect warranty, someone will have to view this and set // actual purchase date @@ -472,6 +497,28 @@ class Warranty return $this->file_warr_card; } + public function setVehicle(Vehicle $v) + { + $this->vehicle = $v; + return $this; + } + + public function getVehicle() + { + return $this->vehicle; + } + + public function setVehicleModelYear($year) + { + $this->v_model_year = $year; + return $this; + } + + public function getVehicleModelYear() + { + return $this->v_model_year; + } + public function setOdometer($odometer) { $this->odometer = $odometer; @@ -483,6 +530,28 @@ class Warranty return $this->odometer; } + public function setDealerName($name) + { + $this->dealer_name = $name; + return $this; + } + + public function getDealerName() + { + return $this->dealer_name; + } + + public function setDealerAddress($address) + { + $this->dealer_address = $address; + return $this; + } + + public function getDealerAddress() + { + return $this->dealer_address; + } + public function setDatePurchaseCustomer($date) { $this->date_purchase_cust = $date;