From 2e022c893cff9331655528232504f35ec90b87ff Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 29 Jul 2019 08:32:48 +0000 Subject: [PATCH] Add form for warranty submission. #236 --- src/Controller/WarrantyController.php | 60 ++++++++- templates/warranty/form.html.twig | 175 ++++++++++++++++++++++++++ 2 files changed, 231 insertions(+), 4 deletions(-) diff --git a/src/Controller/WarrantyController.php b/src/Controller/WarrantyController.php index dab8e7c0..832cfd53 100644 --- a/src/Controller/WarrantyController.php +++ b/src/Controller/WarrantyController.php @@ -4,9 +4,11 @@ namespace App\Controller; use App\Entity\Warranty; use App\Entity\SAPBattery; -use App\Entity\BatteryManufacturer; +use App\Entity\BatteryModel; +use App\Entity\BatterySize; use App\Ramcar\WarrantyClass; +use App\Ramcar\WarrantyStatus; use Doctrine\ORM\Query; use Symfony\Component\HttpFoundation\Request; @@ -146,9 +148,38 @@ class WarrantyController extends Controller ->setFirstName($req->request->get('first_name')) ->setLastName($req->request->get('last_name')) ->setMobileNumber($req->request->get('mobile_number')) - ->setDatePurchase(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_purchase'))); + ->setDatePurchase(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_purchase'))) + ->setDateExpire(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_expire'))) + ->setDateClaim(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_claim'))) + ->setClaimFrom($req->request->get('claim_from')) + ->setStatus($req->request->get('status')); - // need to get the battery and SAP battery set + // 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); @@ -163,6 +194,25 @@ class WarrantyController extends Controller 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!' + ]); + } + } /** @@ -209,9 +259,11 @@ class WarrantyController extends Controller { $em = $this->getDoctrine()->getManager(); - $params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll(); + $params['batt_models'] = $em->getRepository(BatteryModel::class)->findAll(); + $params['batt_sizes'] = $em->getRepository(BatterySize::class)->findAll(); $params['sap_batts'] = $em->getRepository(SAPBattery::class)->findAll(); $params['warranty_classes'] = WarrantyClass::getCollection(); + $params['warranty_statuses'] = WarrantyStatus::getCollection(); } // check if datatable filter is present and append to query diff --git a/templates/warranty/form.html.twig b/templates/warranty/form.html.twig index 3e9da5dd..d5c629f4 100644 --- a/templates/warranty/form.html.twig +++ b/templates/warranty/form.html.twig @@ -92,6 +92,99 @@ +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+ +
+ + + + +
+ +
+
+ + + +
+
+
+
+ +
+ + + + +
+ +
+
+ + + +
+
+ + + +
+
+ + +
+
+
+
+ + Back +
+
@@ -100,3 +193,85 @@ {% endblock %} + +{% block scripts %} + +{% endblock %}