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:
parent
ae9b7ce061
commit
fc97f906e9
2 changed files with 86 additions and 45 deletions
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue