diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 4fd4e30e..766c7e40 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -591,7 +591,15 @@ class APIController extends Controller implements LoggedController if ($res->isError()) return $res; - // TODO: check valid plate number + // clean plate number + $clean_plate = $this->cleanPlateNumber($req->request->get('plate_num')); + if (!($clean_plate)) + { + $res->setError(true) + ->setErrorMessage('Invalid plate number. Plate number should be alphanumeric.'); + return $res; + } + // TODO: check valid fuel type (gas / diesel) // TODO: check current battery id // TODO: check condition (brand new / second-hand) @@ -4700,4 +4708,14 @@ class APIController extends Controller implements LoggedController { return trim(strtolower($string)); } + + protected function cleanPlateNumber($plate) + { + // trim plate number down to 20 characters + $trim_plate = str_replace(' ','', $plate); + + $clean_plate = Warranty::cleanPlateNumber($trim_plate); + + return $clean_plate; + } } diff --git a/src/Service/CustomerHandler/ResqCustomerHandler.php b/src/Service/CustomerHandler/ResqCustomerHandler.php index f8685801..37f2f7e8 100644 --- a/src/Service/CustomerHandler/ResqCustomerHandler.php +++ b/src/Service/CustomerHandler/ResqCustomerHandler.php @@ -24,6 +24,7 @@ use App\Entity\Battery; use App\Entity\VehicleManufacturer; use App\Entity\BatteryManufacturer; use App\Entity\CustomerTag; +use App\Entity\Warranty; use DateTime; @@ -209,60 +210,69 @@ class ResqCustomerHandler implements CustomerHandlerInterface } else { - $cust_vehicle = new CustomerVehicle(); - $cust_vehicle->setName($vehicle->name) - ->setVehicle($vobj) - ->setPlateNumber($vehicle->plate_number) - ->setModelYear($vehicle->model_year) - ->setColor($vehicle->color) - ->setStatusCondition($vehicle->status_condition) - ->setFuelType($vehicle->fuel_type) - ->setActive($vehicle->flag_active) - ->setCustomer($row); - - // if specified, check if battery exists - if ($vehicle->battery) + // clean and validate plate number + $clean_plate = $this->cleanPlateNumber($vehicle->plate_number); + if (!($clean_plate)) { - // check if battery exists - $bobj = $em->getRepository(Battery::class)->find($vehicle->battery); + $verror_array[$vehicle->index]['plate_number'] = 'Invalid plate number.'; + } + else + { + $cust_vehicle = new CustomerVehicle(); + $cust_vehicle->setName($vehicle->name) + ->setVehicle($vobj) + ->setPlateNumber($clean_plate) + ->setModelYear($vehicle->model_year) + ->setColor($vehicle->color) + ->setStatusCondition($vehicle->status_condition) + ->setFuelType($vehicle->fuel_type) + ->setActive($vehicle->flag_active) + ->setCustomer($row); - if (empty($bobj)) + // if specified, check if battery exists + if ($vehicle->battery) { - $verror_array[$vehicle->index]['battery'] = 'Invalid battery specified.'; + // check if battery exists + $bobj = $em->getRepository(Battery::class)->find($vehicle->battery); + + if (empty($bobj)) + { + $verror_array[$vehicle->index]['battery'] = 'Invalid battery specified.'; + } + else + { + // check if warranty expiration was specified + $warr_ex = DateTime::createFromFormat("d M Y", $vehicle->warranty_expiration); + if (!$warr_ex) + $warr_ex = null; + + $cust_vehicle->setHasMotoliteBattery(true) + ->setCurrentBattery($bobj) + ->setWarrantyCode($vehicle->warranty_code) + ->setWarrantyExpiration($warr_ex); + } } else { - // check if warranty expiration was specified - $warr_ex = DateTime::createFromFormat("d M Y", $vehicle->warranty_expiration); - if (!$warr_ex) - $warr_ex = null; - - $cust_vehicle->setHasMotoliteBattery(true) - ->setCurrentBattery($bobj) - ->setWarrantyCode($vehicle->warranty_code) - ->setWarrantyExpiration($warr_ex); + $cust_vehicle->setHasMotoliteBattery(false); } - } - else - { - $cust_vehicle->setHasMotoliteBattery(false); - } - $verrors = $this->validator->validate($cust_vehicle); + $verrors = $this->validator->validate($cust_vehicle); - // add errors to list - foreach ($verrors as $error) - { - if (!isset($verror_array[$vehicle->index])) - $verror_array[$vehicle->index] = []; + // add errors to list + foreach ($verrors as $error) + { + if (!isset($verror_array[$vehicle->index])) + $verror_array[$vehicle->index] = []; - $verror_array[$vehicle->index][$error->getPropertyPath()] = $error->getMessage(); - } + $verror_array[$vehicle->index][$error->getPropertyPath()] = $error->getMessage(); + } - // add to entity - if (!isset($verror_array[$vehicle->index])) - { - $row->addVehicle($cust_vehicle); + // add to entity + if (!isset($verror_array[$vehicle->index])) + { + $row->addVehicle($cust_vehicle); + } } } } @@ -697,10 +707,14 @@ class ResqCustomerHandler implements CustomerHandlerInterface throw new CrudException("Could not find vehicle."); // TODO: validate details + // clean and validate plate number + $clean_plate = $this->cleanPlateNumber($vehicle->plate_number); + if (!($clean_plate)) + throw new CrudException("Invalid plate number."); $cust_vehicle->setName($vehicle->name) ->setVehicle($vobj) - ->setPlateNumber($vehicle->plate_number) + ->setPlateNumber($clean_plate) ->setModelYear($vehicle->model_year) ->setColor($vehicle->color) ->setStatusCondition($vehicle->status_condition) @@ -759,4 +773,13 @@ class ResqCustomerHandler implements CustomerHandlerInterface } } + protected function cleanPlateNumber($plate) + { + // trim plate number down to 20 characters + $trim_plate = str_replace(' ','', $plate); + + $clean_plate = Warranty::cleanPlateNumber($trim_plate); + + return $clean_plate; + } }