Draft: Resolve "Warranty revisions" #1463

Closed
korina.cordero wants to merge 1 commit from 550-warranty-revisions into master
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);
}
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([

View file

@ -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();
}
}

View file

@ -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();