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