diff --git a/src/Controller/WarrantyController.php b/src/Controller/WarrantyController.php index 145ffe85..2f61d572 100644 --- a/src/Controller/WarrantyController.php +++ b/src/Controller/WarrantyController.php @@ -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,10 @@ 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) @@ -221,7 +226,6 @@ class WarrantyController extends Controller 'success' => 'Changes have been saved!' ]); } - } /** @@ -261,6 +265,90 @@ class WarrantyController extends Controller // 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) + ->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!' + ]); + } + } diff --git a/templates/warranty/form.html.twig b/templates/warranty/form.html.twig index be1fab1e..d1d4592f 100644 --- a/templates/warranty/form.html.twig +++ b/templates/warranty/form.html.twig @@ -110,7 +110,7 @@
@@ -122,7 +122,7 @@ @@ -141,7 +141,12 @@