From e62c3dc0971e4228efa20ca29b274dbf9a154b73 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 13 Dec 2019 09:38:26 +0000 Subject: [PATCH] Add checking for serial and plate number. #288 --- src/Controller/WarrantyController.php | 164 ++++++++++++++++++++------ 1 file changed, 128 insertions(+), 36 deletions(-) diff --git a/src/Controller/WarrantyController.php b/src/Controller/WarrantyController.php index ede93334..2adf0abb 100644 --- a/src/Controller/WarrantyController.php +++ b/src/Controller/WarrantyController.php @@ -469,11 +469,13 @@ class WarrantyController extends Controller $first_name = trim($fields[0]); $last_name = trim($fields[1]); $mobile_number = trim($fields[4]); - $plate_number = trim($fields[9]); + $plate = trim($fields[9]); $serial = trim($fields[10]); $purchase_date = trim($fields[12]); $battery_id = trim($fields[16]); + $plate_number = $this->cleanPlateNumber($plate); + // check if purchase_date or plate_number or serial is empty or if // purchase date is valid $date_purchase = DateTime::createFromFormat('d-M-y', $purchase_date); @@ -521,53 +523,137 @@ class WarrantyController extends Controller } else { - - // new warranty - $warranty = new Warranty(); - - // get the battery purchased - // check battery first. If not found, check sap_battery - $battery = $em->getRepository(Battery::class)->find($battery_id); - if ($battery != null) + // additional validation + // check if serial number and plate number already exists + $warr_results = $em->getRepository(Warranty::class)->findBy(['serial' => $serial, 'plate_number' => $plate_number]); + if (!empty($warr_results)) { - // get the battery model and battery size - $model_id = $battery->getModel()->getID(); - $size_id = $battery->getSize()->getID(); - - $bty_model = $em->getRepository(BatteryModel::class)->find($model_id); - $bty_size = $em->getRepository(BatterySize::class)->find($size_id); - - if ($bty_model != null) + foreach($warr_results as $warr) { - $warranty->setBatteryModel($bty_model); - } + // check if details are complete + if (empty($warr->getFirstName())) + { + if (!empty($first_name)) + { + $warr->setFirstName($first_name); + } + } + if (empty($warr->getLastName())) + { + if (!empty($last_name)) + { + $warr->setLastName($last_name); + } + } + if (empty($warr->getMobileNumber())) + { + if (!empty($mobile_number)) + { + $warr->setMobileNumber($mobile_number); + } + } + if ((empty($warr->getBatteryModel())) || + (empty($warr->getBatterySize()))) + { + if (!empty($battery_id)) + { + // find battery + $battery = $em->getRepository(Battery::class)->find($battery_id); + if (!empty($battery)) + { + // get the battery model and battery size + $model_id = $battery->getModel()->getID(); + $size_id = $battery->getSize()->getID(); - if ($bty_size != null) - { - $warranty->setBatterySize($bty_size); + $bty_model = $em->getRepository(BatteryModel::class)->find($model_id); + $bty_size = $em->getRepository(BatterySize::class)->find($size_id); + + if ($bty_model != null) + { + $warr->setBatteryModel($bty_model); + } + if ($bty_size != null) + { + $warr->setBatterySize($bty_size); + } + $sap_code = $battery->getSAPCode(); + if (!empty($sap_code)) + { + // find sap battery + $sap_batt = $em->getRepository(SAPBattery::class)->find($sap_code); + if (!empty($sap_batt)) + { + $warr->setSAPBattery($sap_batt); + } + } + } + } + } + if (empty($warr->getDatePurchase())) + { + if (!empty($date_purchase)) + { + $warr->setDatePurchase($date_purchase); + } + } + + // TODO: compute expiry date + $em->persist($warr); + $em->flush(); } } else { - // find battery in sap_battery - $battery = $em->getRepository(SAPBattery::class)->find($battery_id); + // new warranty + $warranty = new Warranty(); + + // get the battery purchased + // check battery first. If not found, check sap_battery + $battery = $em->getRepository(Battery::class)->find($battery_id); if ($battery != null) { - // battery is SAPBattery - $warranty->setSAPBattery($battery); + // get the battery model and battery size + $model_id = $battery->getModel()->getID(); + $size_id = $battery->getSize()->getID(); + + $bty_model = $em->getRepository(BatteryModel::class)->find($model_id); + $bty_size = $em->getRepository(BatterySize::class)->find($size_id); + + if ($bty_model != null) + { + $warranty->setBatteryModel($bty_model); + } + + if ($bty_size != null) + { + $warranty->setBatterySize($bty_size); + } } + else + { + // find battery in sap_battery + $battery = $em->getRepository(SAPBattery::class)->find($battery_id); + if ($battery != null) + { + // battery is SAPBattery + $warranty->setSAPBattery($battery); + } + } + + // TODO: compute expiry date + + // set and save values + $warranty->setSerial($serial) + ->setPlateNumber($plate_number) + ->setFirstName($first_name) + ->setLastName($last_name) + ->setMobileNumber($mobile_number) + ->setDatePurchase($date_purchase); + + $em->persist($warranty); + $em->flush(); } - // set and save values - $warranty->setSerial($serial) - ->setPlateNumber($plate_number) - ->setFirstName($first_name) - ->setLastName($last_name) - ->setMobileNumber($mobile_number) - ->setDatePurchase($date_purchase); - - $em->persist($warranty); - $em->flush(); } $row_num++; @@ -595,4 +681,10 @@ class WarrantyController extends Controller ->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%'); } } + + protected function cleanPlateNumber($plate) + { + // remove spaces and make upper case + return strtoupper(str_replace(' ', '', $plate)); + } }