diff --git a/public/assets/images/icon-destination.png b/public/assets/images/icon-destination.png index 2ef2fdff..ab52f86f 100644 Binary files a/public/assets/images/icon-destination.png and b/public/assets/images/icon-destination.png differ diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index c9e7eeef..8b83acd6 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -47,7 +47,7 @@ class JobOrderController extends BaseController return $this->render('job-order/form.html.twig', $params); } - public function incomingSubmit(Request $req) + public function incomingSubmit(Request $req, ValidatorInterface $validator) { $this->denyAccessUnlessGranted('jo_in.list', null, 'No access.'); @@ -93,20 +93,16 @@ class JobOrderController extends BaseController ->setDeliveryInstructions($req->request->get('delivery_instructions')) ->setAgentNotes($req->request->get('agent_notes')) ->setDeliveryAddress($req->request->get('delivery_address')); + + // validate + $errors = $validator->validate($obj); + + // add errors to list + foreach ($errors as $error) { + $error_array[$error->getPropertyPath()] = $error->getMessage(); + } } - // TODO: Validation - - /* - // validate - $errors = $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 @@ -314,7 +310,59 @@ class JobOrderController extends BaseController error_log(print_r($req->request->all(), true)); - // TODO: validation and saving of updated job order + // 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.'; + } + + // check if outlet is set + if (empty($req->request->get('outlet'))) { + $error_array['outlet'] = 'No outlet selected.'; + } else { + // get outlet + $outlet = $em->getRepository(Outlet::class)->find($req->request->get('outlet')); + + if (empty($outlet)) { + $error_array['outlet'] = 'Invalid outlet specified.'; + } + } + + if (empty($error_array)) { + // coordinates + $point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat')); + + // 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($req->request->get('service_type')) + ->setSource('web') + ->setStatus($req->request->get('status')) + ->setDeliveryInstructions($req->request->get('delivery_instructions')) + ->setAgentNotes($req->request->get('agent_notes')) + ->setDeliveryAddress($req->request->get('delivery_address')) + ->setOutlet($outlet); + + // validate + $errors = $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); + } + + // validated! save the entity + $em->flush(); // return successful response return $this->json([ diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index 578741ba..1b30ef9c 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -77,6 +77,7 @@ class JobOrder /** * @ORM\ManyToOne(targetEntity="Customer", inversedBy="job_orders") * @ORM\JoinColumn(name="customer_id", referencedColumnName="id") + * Assert\NotBlank() */ protected $customer; @@ -84,6 +85,7 @@ class JobOrder /** * @ORM\ManyToOne(targetEntity="CustomerVehicle", inversedBy="job_orders") * @ORM\JoinColumn(name="cvehicle_id", referencedColumnName="id") + * Assert\NotBlank() */ protected $cus_vehicle; diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index 8bd64bdc..e5367bb8 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -160,13 +160,13 @@
- +
- + @@ -176,7 +176,7 @@
- + @@ -353,7 +353,7 @@ {% for outlet in outlets %} - + {{ outlet.outlet.getName }} {{ outlet.outlet.getAddress }} {{ outlet.outlet.getContactNumbers }} @@ -823,7 +823,7 @@ $(function() { {% if mode == 'update' %} - var selectedOutlet = false; + var selectedOutlet = '{{ obj.getOutlet ? obj.getOutlet.getID : "" }}'; $("#outlets-table tbody tr").click(function() { var id = $(this).data('id'); @@ -841,7 +841,7 @@ $(function() { $(this).removeClass('m-table__row--primary'); // remove id value - selectedOutlet = false; + selectedOutlet = ''; } }); {% endif %}