diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 3567db8e..daff6232 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -838,4 +838,30 @@ class JobOrderController extends Controller // response return $this->render($template, $params); } + + public function oneStepSubmit(Request $req, JobOrderHandlerInterface $jo_handler) + { + $this->denyAccessUnlessGranted('jo_onestep.form', null, 'No access.'); + + // initialize error list + $error_array = []; + $id = -1; + $error_array = $jo_handler->generateOneStepJobOrder($req, $id); + + // check if any errors were found + if (!empty($error_array)) { + // return validation failure response + return $this->json([ + 'success' => false, + 'errors' => $error_array + ], 422); + } + + + // return successful response + return $this->json([ + 'success' => 'Changes have been saved!' + ]); + + } } diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 4986a1da..5e849eed 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1086,6 +1086,51 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } + public function generateOneStepJobOrder(Request $req, $id) + { + // initialize error list + $error_array = []; + + $em = $this->em; + + $jo = $em->getRepository(JobOrder::class)->find($id); + if (empty($jo)) + { + // new job order + $jo = new JobOrder(); + } + + // 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 customer vehicle is set + if (empty($req->request->get('customer_vehicle'))) { + $error_array['customer_vehicle'] = 'No vehicle selected.'; + } else { + // get customer vehicle + $cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle')); + + if (empty($cust_vehicle)) { + $error_array['customer_vehicle'] = 'Invalid vehicle specified.'; + } + } + + // check if hub AND rider is selected + if ((empty($req->request->get('hub_id'))) && + (empty($req->request->get('rider_id')))) { + $error_array['hub'] = 'No hub selected.'; + } else { + if (empty($req->request->get('rider_id'))) { + $error_array['rider'] = 'No rider selected.'; + } + } + + return $error_array; + + } + // initialize incoming job order form public function initializeIncomingForm() diff --git a/templates/job-order/form.onestep.html.twig b/templates/job-order/form.onestep.html.twig index 86c44a81..4a419b60 100644 --- a/templates/job-order/form.onestep.html.twig +++ b/templates/job-order/form.onestep.html.twig @@ -363,8 +363,9 @@
- + +
@@ -396,10 +397,11 @@
- + +
-
+
@@ -931,7 +933,7 @@ $(function() { }); $(function() { - var selectedHub = ""; + var selected_hub = ''; $('#hubs-table').on('click', 'tr', function() { var id = $(this).data('id'); @@ -941,12 +943,14 @@ $(function() { $(this).addClass('m-table__row--primary'); // set hub - selectedHub = id; + selected_hub = id; + $('#hub-field').val(selected_hub); // get riders of hub - // get hub riders ajax + // get hub riders ajax + // TODO: add latitude and longitude of delivery location to ajax request var rider_table = ''; - $.getJSON("{{ url('hub_riders') }}?id=" + selectedHub, function(data) { + $.getJSON("{{ url('hub_riders') }}?id=" + selected_hub, function(data) { var riders = data['riders']; for (i in riders) { var rider = riders[i]; @@ -966,17 +970,18 @@ $(function() { }); $(function() { - var selectedRider = ""; - $('#riders-table').on('click', 'tr', function() { + var selected_rider = ''; + $('#rider-table').on('click', 'tr', function() { var id = $(this).data('id'); // highlight this row - $('#riders-table').find('.m-table__row--primary').removeClass('m-table__row--primary'); + $('#rider-table').find('.m-table__row--primary').removeClass('m-table__row--primary'); $(this).addClass('m-table__row--primary'); // set rider - selectedRider = id; + selected_rider = id; + $('#rider-field').val(selected_rider); }); });
First Name