Add cleaning and checking of plate number when adding or updating a customer vehicle in admin panel and mobile app. #691

This commit is contained in:
Korina Cordero 2022-07-11 08:18:50 +00:00
parent ae9b7ce061
commit fc97f906e9
2 changed files with 86 additions and 45 deletions

View file

@ -591,7 +591,15 @@ class APIController extends Controller implements LoggedController
if ($res->isError()) if ($res->isError())
return $res; 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 valid fuel type (gas / diesel)
// TODO: check current battery id // TODO: check current battery id
// TODO: check condition (brand new / second-hand) // TODO: check condition (brand new / second-hand)
@ -4700,4 +4708,14 @@ class APIController extends Controller implements LoggedController
{ {
return trim(strtolower($string)); 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;
}
} }

View file

@ -24,6 +24,7 @@ use App\Entity\Battery;
use App\Entity\VehicleManufacturer; use App\Entity\VehicleManufacturer;
use App\Entity\BatteryManufacturer; use App\Entity\BatteryManufacturer;
use App\Entity\CustomerTag; use App\Entity\CustomerTag;
use App\Entity\Warranty;
use DateTime; use DateTime;
@ -209,60 +210,69 @@ class ResqCustomerHandler implements CustomerHandlerInterface
} }
else else
{ {
$cust_vehicle = new CustomerVehicle(); // clean and validate plate number
$cust_vehicle->setName($vehicle->name) $clean_plate = $this->cleanPlateNumber($vehicle->plate_number);
->setVehicle($vobj) if (!($clean_plate))
->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)
{ {
// check if battery exists $verror_array[$vehicle->index]['plate_number'] = 'Invalid plate number.';
$bobj = $em->getRepository(Battery::class)->find($vehicle->battery); }
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 else
{ {
// check if warranty expiration was specified $cust_vehicle->setHasMotoliteBattery(false);
$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
{
$cust_vehicle->setHasMotoliteBattery(false);
}
$verrors = $this->validator->validate($cust_vehicle); $verrors = $this->validator->validate($cust_vehicle);
// add errors to list // add errors to list
foreach ($verrors as $error) foreach ($verrors as $error)
{ {
if (!isset($verror_array[$vehicle->index])) if (!isset($verror_array[$vehicle->index]))
$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 // add to entity
if (!isset($verror_array[$vehicle->index])) if (!isset($verror_array[$vehicle->index]))
{ {
$row->addVehicle($cust_vehicle); $row->addVehicle($cust_vehicle);
}
} }
} }
} }
@ -697,10 +707,14 @@ class ResqCustomerHandler implements CustomerHandlerInterface
throw new CrudException("Could not find vehicle."); throw new CrudException("Could not find vehicle.");
// TODO: validate details // 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) $cust_vehicle->setName($vehicle->name)
->setVehicle($vobj) ->setVehicle($vobj)
->setPlateNumber($vehicle->plate_number) ->setPlateNumber($clean_plate)
->setModelYear($vehicle->model_year) ->setModelYear($vehicle->model_year)
->setColor($vehicle->color) ->setColor($vehicle->color)
->setStatusCondition($vehicle->status_condition) ->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;
}
} }