From db46e5134f6340c9b2e58a264a0801f3a55df4c8 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 14 Apr 2020 09:18:13 +0000 Subject: [PATCH] Fix for the JO event logs and status issues when editing a JO. #377 --- src/Controller/JobOrderController.php | 2 +- .../JobOrderHandler/ResqJobOrderHandler.php | 101 +++++++++++++++++- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index c92de36a..3f9fc632 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -98,7 +98,7 @@ class JobOrderController extends Controller $this->denyAccessUnlessGranted('jo_open.edit', null, 'No access.'); $error_array = []; - $result = $jo_handler->generateJobOrder($req, $id); + $result = $jo_handler->updateJobOrder($req, $id); $error_array = $result['error_array']; diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index deeea114..f3a4d96f 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -266,7 +266,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface return $params; } - // creates/updates job order + // creates job order public function generateJobOrder(Request $req, $id) { // initialize error list @@ -415,6 +415,105 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface return $data; } + // updates job order + public function updateJobOrder(Request $req, $id) + { + $em = $this->em; + + $obj = $em->getRepository(JobOrder::class)->find($id); + + // initialize error list + $error_array = []; + + // make sure this object exists + if (empty($obj)) + throw $this->createNotFoundException('The item does not exist'); + + // check if lat and lng are provided + if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) { + $error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.'; + } + + if (empty($error_array)) + { + // get current user + $user = $this->security->getUser(); + + // coordinates + $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); + + $stype = $req->request->get('service_type'); + + // set and save values + $obj->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time'))) + ->setCoordinates($point) + ->setAdvanceOrder($req->request->get('flag_advance') ?? false) + ->setServiceType($stype) + ->setWarrantyClass($req->request->get('warranty_class')) + ->setSource($req->request->get('source')) + ->setDeliveryInstructions($req->request->get('delivery_instructions')) + ->setTier1Notes($req->request->get('tier1_notes')) + ->setTier2Notes($req->request->get('tier2_notes')) + ->setDeliveryAddress($req->request->get('delivery_address')) + ->setORName($req->request->get('or_name')) + ->setPromoDetail($req->request->get('promo_detail')) + ->setModeOfPayment($req->request->get('mode_of_payment')) + ->setLandmark($req->request->get('landmark')); + + // did they change invoice? + $invoice_items = $req->request->get('invoice_items', []); + $promo_id = $req->request->get('invoice_promo'); + $invoice_change = $req->request->get('invoice_change', 0); + if ($invoice_change) + { + $this->ic->generateInvoiceCriteria($obj, $promo_id, $invoice_items, $error_array); + } + + // validate + $errors = $this->validator->validate($obj); + + // 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); + } + + // the event + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::OPEN_EDIT) + ->setJobOrder($obj); + + if ($user != null) + { + $event->setUser($user); + } + + $em->persist($event); + + // validated! save the entity + $em->flush(); + } + + $data['error_array'] = $error_array; + + if ($obj != null) + { + $data['job_order'] = $obj; + } + + return $data; + + } + // dispatch job order public function dispatchJobOrder(Request $req, int $id, MQTTClient $mclient) {