Add update warranty. #236

This commit is contained in:
Korina Cordero 2019-07-30 06:20:16 +00:00
parent 978735adbd
commit ad27ec3cf2
2 changed files with 97 additions and 4 deletions

View file

@ -146,6 +146,7 @@ class WarrantyController extends Controller
$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'));
// set and save values
$obj->setSerial($req->request->get('serial'))
@ -161,6 +162,132 @@ class WarrantyController extends Controller
{
$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)
->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);
$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)) {
// return validation failure response
return $this->json([
'success' => false,
'errors' => $error_array
], 422);
} else {
// validated! save the entity
$em->persist($obj);
$em->flush();
// return successful response
return $this->json([
'success' => 'Changes have been saved!'
]);
}
}
/**
* @Menu(selected="warranty_list")
*/
public function updateForm($id)
{
$this->denyAccessUnlessGranted('warranty.update', null, 'No access.');
$params['mode'] = 'update';
// get row data
$em = $this->getDoctrine()->getManager();
$obj = $em->getRepository(Warranty::class)->find($id);
// make sure this row exists
if (empty($obj))
throw $this->createNotFoundException('The item does not exist');
$params['obj'] = $obj;
// get dropdown parameters
$this->fillDropdownParameters($params);
// response
return $this->render('warranty/form.html.twig', $params);
}
public function updateSubmit(Request $req, ValidatorInterface $validator, $id)
{
$this->denyAccessUnlessGranted('warranty.update', null, 'No access.');
// get row data
$em = $this->getDoctrine()->getManager();
$obj = $em->getRepository(Warranty::class)->find($id);
// make sure this row exists
if (empty($obj))
throw $this->createNotFoundException('The item does not exist');
$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'));
// 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'));
if ($date_claim)
{
$obj->setDateClaim($date_claim);
}
if ($date_expire)
{
$obj->setDateExpire($date_expire);
}
// custom validation for battery model
$model = $em->getRepository(BatteryModel::class)
@ -224,45 +351,6 @@ class WarrantyController extends Controller
}
/**
* @Menu(selected="warranty_list")
*/
public function updateForm($id)
{
$this->denyAccessUnlessGranted('warranty.update', null, 'No access.');
$params['mode'] = 'update';
// get row data
$em = $this->getDoctrine()->getManager();
$obj = $em->getRepository(Warranty::class)->find($id);
// make sure this row exists
if (empty($obj))
throw $this->createNotFoundException('The item does not exist');
$params['obj'] = $obj;
// get dropdown parameters
$this->fillDropdownParameters($params);
// response
return $this->render('warranty/form.html.twig', $params);
}
public function updateSubmit(Request $req, ValidatorInterface $validator, $id)
{
$this->denyAccessUnlessGranted('warranty.update', null, 'No access.');
// get row data
$em = $this->getDoctrine()->getManager();
$obj = $em->getRepository(Warranty::class)->find($id);
// make sure this row exists
if (empty($obj))
throw $this->createNotFoundException('The item does not exist');
}
protected function fillDropdownParameters(&$params)
{

View file

@ -110,7 +110,7 @@
</label>
<select name="battery_model" class="form-control m-input">
{% for model in batt_models %}
<option value="{{ model.getID }}"{{ obj.getModel.getID|default(0) == model.getID ? ' selected' }}>{{ model.getName }}</option>
<option value="{{ model.getID }}"{{ obj.getBatteryModel.getID|default(0) == model.getID ? ' selected' }}>{{ model.getName }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="battery_model"></div>
@ -122,7 +122,7 @@
<select class="form-control m-input" id="battery_size" name="battery_size">
<option value=""></option>
{% for size in batt_sizes %}
<option value="{{ size.getID }}"{{ obj.getSize.getID|default(0) == size.getID ? ' selected' }}>{{ size.getName }}</option>
<option value="{{ size.getID }}"{{ obj.getBatterySize.getID|default(0) == size.getID ? ' selected' }}>{{ size.getName }}</option>
{% endfor %}
</select>
<div class="form-control-feedback hide" data-field="size"></div>
@ -141,7 +141,12 @@
</div>
<div class="col-lg-6">
<label data-field="date_expire">Expiry Date</label>
<input type="text" name="date_expire" class="form-control m-input" value="{{ obj.getDateExpire is empty? "" : obj.getDateExpire|date('Y-m-d') }}" disabled>
<div class="input-group date dp">
<input type="text" name="date_expire" class="form-control m-input" value="{{ obj.getDateExpire|default("now")|date('d M Y') }}" readonly placeholder="Select a date">
<span class="input-group-addon">
<i class="la la-calendar glyphicon-th"></i>
</span>
</div>
<div class="form-control-feedback hide" data-field="date_expire"></div>
</div>
</div>