From 7b1d36a74f4d963eeb21a21a87a0b3a92318865c Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 16 Apr 2021 10:25:50 +0000 Subject: [PATCH] Have controller call the createWarranty in service. #550 --- src/Controller/WarrantyController.php | 73 ++++--------------- .../RiderAPIHandler/ResqRiderAPIHandler.php | 1 + src/Service/WarrantyHandler.php | 33 ++++++--- 3 files changed, 41 insertions(+), 66 deletions(-) diff --git a/src/Controller/WarrantyController.php b/src/Controller/WarrantyController.php index b1f2442e..899659e1 100644 --- a/src/Controller/WarrantyController.php +++ b/src/Controller/WarrantyController.php @@ -149,78 +149,37 @@ class WarrantyController extends Controller return $this->render('warranty/form.html.twig', $params); } - public function addSubmit(Request $req, ValidatorInterface $validator) + public function addSubmit(Request $req, WarrantyHandler $wh, ValidatorInterface $validator) { $this->denyAccessUnlessGranted('warranty.add', null, 'No access.'); - // create new row + // get row data $em = $this->getDoctrine()->getManager(); - $obj = new Warranty(); $date_purchase = DateTime::createFromFormat('d M Y', $req->request->get('date_purchase')); $date_claim = DateTime::createFromFormat('d M Y', $req->request->get('date_claim')); $date_expire = DateTime::createFromFormat('d M Y', $req->request->get('date_expire')); + $serial = $req->request->get('serial'); + $warranty_class = $req->request->get('warranty_class'); + $first_name = $req->request->get('first_name'); + $last_name = $req->request->get('last_name'); + $mobile_number = $req->request->get('mobile_number'); + $claimed_from = $req->request->get('claim_from'); + $status = $req->request->get('status'); - // set and save values - $obj->setSerial($req->request->get('serial')) - ->setWarrantyClass($req->request->get('warranty_class')) - ->setFirstName($req->request->get('first_name')) - ->setLastName($req->request->get('last_name')) - ->setMobileNumber($req->request->get('mobile_number')) - ->setDatePurchase($date_purchase) - ->setClaimedFrom($req->request->get('claim_from')) - ->setStatus($req->request->get('status')); + $batt_list = []; - if ($date_claim) - { - $obj->setDateClaim($date_claim); - } - if ($date_expire) - { - $obj->setDateExpire($date_expire); - } - - // custom validation for battery model - $model = $em->getRepository(BatteryModel::class) - ->find($req->request->get('battery_model')); - - if (empty($model)) - $error_array['battery_model'] = 'Invalid model selected.'; - else - $obj->setBatteryModel($model); - - // custom validation for battery size - $size = $em->getRepository(BatterySize::class) - ->find($req->request->get('battery_size')); - - if (empty($size)) - $error_array['battery_size'] = 'Invalid size selected.'; - else - $obj->setBatterySize($size); - - // custom validation for SAP battery + // TODO: add to batt list, battery model id and battery size id $sap = $em->getRepository(SAPBattery::class) ->find($req->request->get('sap_battery')); - - if (empty($sap)) - $error_array['sap_battery'] = 'Invalid SAP battery selected.'; - else - $obj->setSAPBattery($sap); - - // validate - $errors = $validator->validate($obj); + if (!(empty($sap))) + $batt_list[] = $sap; $cleaned_plate_number = Warranty::cleanPlateNumber($req->request->get('plate_number')); if (!$cleaned_plate_number) { $error_array['plate_number'] = 'Invalid plate number specified.'; } - $obj->setPlateNumber($cleaned_plate_number); - - // add errors to list - foreach ($errors as $error) { - $error_array[$error->getPropertyPath()] = $error->getMessage(); - } // check if any errors were found if (!empty($error_array)) { @@ -230,9 +189,9 @@ class WarrantyController extends Controller 'errors' => $error_array ], 422); } else { - // validated! save the entity - $em->persist($obj); - $em->flush(); + + $wh->createWarranty($serial, $cleaned_plate_number, $first_name, $last_name, $mobile_number, $batt_list, + $date_purchase, $warranty_class, $claimed_from, $status, $date_expire, $date_claim); // return successful response return $this->json([ diff --git a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php index ae6d2199..4b36fee2 100644 --- a/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php +++ b/src/Service/RiderAPIHandler/ResqRiderAPIHandler.php @@ -593,6 +593,7 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface $battery = $item->getBattery(); if ($battery != null) { + // TODO: instead of adding battery, add the model id and size id, and maybe battery id $batt_list[] = $item->getBattery(); } } diff --git a/src/Service/WarrantyHandler.php b/src/Service/WarrantyHandler.php index 6d01eb10..29fbecf2 100644 --- a/src/Service/WarrantyHandler.php +++ b/src/Service/WarrantyHandler.php @@ -25,8 +25,10 @@ class WarrantyHandler $this->em = $em; } + // create warranty public function createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, - $batt_list, DateTime $date_purchase, $warranty_class) + $batt_list, DateTime $date_purchase, $warranty_class, $claimed_from, + $status, $date_expire, $date_claim) { // new warranty $warranty = new Warranty(); @@ -61,28 +63,41 @@ class WarrantyHandler } } - // compute expiry date - $date_expire = null; - if ((!empty($warranty_class)) && - (count($batt_list) != 0)) + if (empty($date_expire)) { - $period = $this->getWarrantyPeriod($batt_list, $warranty_class); - $date_expire = $this->computeDateExpire($date_purchase, $period); + // compute expiry date + $d_expire = null; + if ((!empty($warranty_class)) && + (count($batt_list) != 0)) + { + $period = $this->getWarrantyPeriod($batt_list, $warranty_class); + $d_expire = $this->computeDateExpire($date_purchase, $period); - $warranty->setDateExpire($date_expire); + $warranty->setDateExpire($d_expire); + } } + else + { + $warranty->setDateExpire($d_expire); + } + + if (!(empty($date_claimed))) + $warranty->setDateClaimed($date_claim); // set and save values if (trim($serial) == '') $warranty->setSerial(null); else $warranty->setSerial($serial); + $warranty->setPlateNumber($plate_number) ->setFirstName($first_name) ->setLastName($last_name) ->setMobileNumber($mobile_number) ->setDatePurchase($date_purchase) - ->setWarrantyClass($warranty_class); + ->setWarrantyClass($warranty_class) + ->setStatus($status) + ->setClaimedFrom($claimed_from); $this->em->persist($warranty); $this->em->flush();