Have controller call the createWarranty in service. #550

This commit is contained in:
Korina Cordero 2021-04-16 10:25:50 +00:00
parent 3f2467f8f7
commit 7b1d36a74f
3 changed files with 41 additions and 66 deletions

View file

@ -149,78 +149,37 @@ class WarrantyController extends Controller
return $this->render('warranty/form.html.twig', $params); 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.'); $this->denyAccessUnlessGranted('warranty.add', null, 'No access.');
// create new row // get row data
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$obj = new Warranty();
$date_purchase = DateTime::createFromFormat('d M Y', $req->request->get('date_purchase')); $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_claim = DateTime::createFromFormat('d M Y', $req->request->get('date_claim'));
$date_expire = DateTime::createFromFormat('d M Y', $req->request->get('date_expire')); $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 $batt_list = [];
$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'));
if ($date_claim) // TODO: add to batt list, battery model id and battery size id
{
$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
$sap = $em->getRepository(SAPBattery::class) $sap = $em->getRepository(SAPBattery::class)
->find($req->request->get('sap_battery')); ->find($req->request->get('sap_battery'));
if (!(empty($sap)))
if (empty($sap)) $batt_list[] = $sap;
$error_array['sap_battery'] = 'Invalid SAP battery selected.';
else
$obj->setSAPBattery($sap);
// validate
$errors = $validator->validate($obj);
$cleaned_plate_number = Warranty::cleanPlateNumber($req->request->get('plate_number')); $cleaned_plate_number = Warranty::cleanPlateNumber($req->request->get('plate_number'));
if (!$cleaned_plate_number) if (!$cleaned_plate_number)
{ {
$error_array['plate_number'] = 'Invalid plate number specified.'; $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 // check if any errors were found
if (!empty($error_array)) { if (!empty($error_array)) {
@ -230,9 +189,9 @@ class WarrantyController extends Controller
'errors' => $error_array 'errors' => $error_array
], 422); ], 422);
} else { } else {
// validated! save the entity
$em->persist($obj); $wh->createWarranty($serial, $cleaned_plate_number, $first_name, $last_name, $mobile_number, $batt_list,
$em->flush(); $date_purchase, $warranty_class, $claimed_from, $status, $date_expire, $date_claim);
// return successful response // return successful response
return $this->json([ return $this->json([

View file

@ -593,6 +593,7 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
$battery = $item->getBattery(); $battery = $item->getBattery();
if ($battery != null) if ($battery != null)
{ {
// TODO: instead of adding battery, add the model id and size id, and maybe battery id
$batt_list[] = $item->getBattery(); $batt_list[] = $item->getBattery();
} }
} }

View file

@ -25,8 +25,10 @@ class WarrantyHandler
$this->em = $em; $this->em = $em;
} }
// create warranty
public function createWarranty($serial, $plate_number, $first_name, $last_name, $mobile_number, 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 // new warranty
$warranty = new Warranty(); $warranty = new Warranty();
@ -61,28 +63,41 @@ class WarrantyHandler
} }
} }
if (empty($date_expire))
{
// compute expiry date // compute expiry date
$date_expire = null; $d_expire = null;
if ((!empty($warranty_class)) && if ((!empty($warranty_class)) &&
(count($batt_list) != 0)) (count($batt_list) != 0))
{ {
$period = $this->getWarrantyPeriod($batt_list, $warranty_class); $period = $this->getWarrantyPeriod($batt_list, $warranty_class);
$date_expire = $this->computeDateExpire($date_purchase, $period); $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 // set and save values
if (trim($serial) == '') if (trim($serial) == '')
$warranty->setSerial(null); $warranty->setSerial(null);
else else
$warranty->setSerial($serial); $warranty->setSerial($serial);
$warranty->setPlateNumber($plate_number) $warranty->setPlateNumber($plate_number)
->setFirstName($first_name) ->setFirstName($first_name)
->setLastName($last_name) ->setLastName($last_name)
->setMobileNumber($mobile_number) ->setMobileNumber($mobile_number)
->setDatePurchase($date_purchase) ->setDatePurchase($date_purchase)
->setWarrantyClass($warranty_class); ->setWarrantyClass($warranty_class)
->setStatus($status)
->setClaimedFrom($claimed_from);
$this->em->persist($warranty); $this->em->persist($warranty);
$this->em->flush(); $this->em->flush();