From 406df3d0834aef6e3463ea5c7f1fe206ea06ecea Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 18 Jun 2021 07:00:56 +0000 Subject: [PATCH 1/4] Add setting of customer and vehicle when warranty is created via mobile API, rider API, and admin panel. #588 --- src/Controller/APIController.php | 31 +++++++++++++++++++ .../JobOrderHandler/ResqJobOrderHandler.php | 2 +- .../RiderAPIHandler/ResqRiderAPIHandler.php | 2 +- src/Service/WarrantyHandler.php | 10 ++++-- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index a1623a09..1d13ad47 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -40,6 +40,7 @@ use App\Service\InventoryManager; use App\Service\RiderAssignmentHandlerInterface; use App\Service\WarrantyAPILogger; use App\Service\PromoLogger; + use App\Entity\MobileSession; use App\Entity\Customer; @@ -3185,6 +3186,16 @@ class APIController extends Controller implements LoggedController return $res; } + $customer = $this->session->getCustomer(); + if ($customer != null) + { + $warr->setCustomer($customer); + // get customer vehicles + $vehicle = $this->findCustomerVehicle($customer, $req->request->get('plate_number')); + + if ($vehicle != null) + $warr->setVehicle($vehicle); + } // create or update warranty entry $warr->setSerial($serial) @@ -3259,6 +3270,26 @@ class APIController extends Controller implements LoggedController return $cust; } + protected function findCustomerVehicle($customer, $plate_number) + { + $clean_plate = Warranty::cleanPlateNumber($plate_number); + if ($clean_plate) + { + // find the customer vehicle and get the vehicle + $cust_vehicles = $customer->getVehicles(); + foreach ($cust_vehicles as $cv) + { + if ($cv->getPlateNumber() == $clean_plate) + { + $vehicle = $cv->getVehicle(); + return $vehicle; + } + } + } + + return null; + } + protected function findNearestHub($jo, EntityManagerInterface $em, MapTools $map_tools) { // get the nearest 10 hubs diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 2ec57b40..c9ba36b3 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1062,7 +1062,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $user_id = $user->getUsername(); $source = WarrantySource::ADMIN_PANEL; - $this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source); + $this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source, $obj->getCustomer(), $obj->getCustomerVehicle()->getVehicle()); } else error_log('Invalid plate number for warranty. Plate number = ' . $obj->getCustomerVehicle()->getPlateNumber()); diff --git a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php index 6f1711c3..10678139 100644 --- a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php +++ b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php @@ -602,7 +602,7 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface // for riders, use rider session id $user_id = $this->session->getID(); $source = WarrantySource::RAPI; - $this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source); + $this->wh->createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, $batt_list, $date_purchase, $warranty_class, $user_id, $source, $jo->getCustomer(), $jo->getCustomerVehicle()->getVehicle()); } // send mqtt event (fulfilled) diff --git a/src/Service/WarrantyHandler.php b/src/Service/WarrantyHandler.php index 8d84e8f6..7ba9c6f8 100644 --- a/src/Service/WarrantyHandler.php +++ b/src/Service/WarrantyHandler.php @@ -30,7 +30,8 @@ class WarrantyHandler } public function createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, - $batt_list, DateTime $date_purchase, $warranty_class, $user_id, $source) + $batt_list, DateTime $date_purchase, $warranty_class, $user_id, + $source, $customer, $cust_vehicle) { // new warranty $warranty = new Warranty(); @@ -94,7 +95,9 @@ class WarrantyHandler ->setMobileNumber($mobile_number) ->setDatePurchase($date_purchase) ->setWarrantyClass($warranty_class) - ->setCreateSource($source); + ->setCreateSource($source) + ->setCustomer($customer) + ->setVehicle($cust_vehicle); $this->em->persist($warranty); $this->em->flush(); @@ -362,7 +365,8 @@ class WarrantyHandler public function cleanPlateNumber($plate) { - // remove spaces and make upper case + // TODO: make this more like Warranty's static cleanPlateNumber? + // remove spaces and make upper case return strtoupper(str_replace(' ', '', $plate)); } From 4a0adef749e7c9933013cb2e44af1b5215754a05 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 18 Jun 2021 07:44:38 +0000 Subject: [PATCH 2/4] Fixed search for customer vehicle. #588 --- src/Controller/APIController.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 1d13ad47..15059510 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3191,8 +3191,8 @@ class APIController extends Controller implements LoggedController { $warr->setCustomer($customer); // get customer vehicles - $vehicle = $this->findCustomerVehicle($customer, $req->request->get('plate_number')); - + + $vehicle = $this->findCustomerVehicle($em, $customer, $req->request->get('plate_number')); if ($vehicle != null) $warr->setVehicle($vehicle); } @@ -3270,20 +3270,23 @@ class APIController extends Controller implements LoggedController return $cust; } - protected function findCustomerVehicle($customer, $plate_number) + protected function findCustomerVehicle($em, $customer, $plate_number) { $clean_plate = Warranty::cleanPlateNumber($plate_number); if ($clean_plate) { // find the customer vehicle and get the vehicle - $cust_vehicles = $customer->getVehicles(); - foreach ($cust_vehicles as $cv) + $cv = $em->getRepository(CustomerVehicle::class)->findOneBy(['plate_number' => $clean_plate]); + if ($cv != null) { - if ($cv->getPlateNumber() == $clean_plate) + // confirm that customer vehicle found does belong to customer + if ($cv->getCustomer() == $customer) { $vehicle = $cv->getVehicle(); return $vehicle; } + else + return null; } } From ceb54afa10296a6a8bee83a8db45ef1295e4d95b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 18 Jun 2021 08:15:33 +0000 Subject: [PATCH 3/4] Fixed search for customer vehicle. #588 --- src/Controller/APIController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 15059510..4ada7063 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3276,7 +3276,7 @@ class APIController extends Controller implements LoggedController if ($clean_plate) { // find the customer vehicle and get the vehicle - $cv = $em->getRepository(CustomerVehicle::class)->findOneBy(['plate_number' => $clean_plate]); + $cv = $em->getRepository(CustomerVehicle::class)->findOneBy(['plate_number' => $clean_plate, 'customer' => $customer]); if ($cv != null) { // confirm that customer vehicle found does belong to customer From 391237f08fb9ff2abbc9a509bb25df18ca1b0032 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 18 Jun 2021 08:27:47 +0000 Subject: [PATCH 4/4] Remove customer checking. #588 --- src/Controller/APIController.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 4ada7063..c718ab1d 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3279,14 +3279,8 @@ class APIController extends Controller implements LoggedController $cv = $em->getRepository(CustomerVehicle::class)->findOneBy(['plate_number' => $clean_plate, 'customer' => $customer]); if ($cv != null) { - // confirm that customer vehicle found does belong to customer - if ($cv->getCustomer() == $customer) - { - $vehicle = $cv->getVehicle(); - return $vehicle; - } - else - return null; + $vehicle = $cv->getVehicle(); + return $vehicle; } }