Add validation when submitting a one step job order. #270

This commit is contained in:
Korina Cordero 2020-01-10 09:53:51 +00:00
parent b7b673fdaf
commit ed2975e8d3
3 changed files with 87 additions and 11 deletions

View file

@ -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!'
]);
}
}

View file

@ -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()

View file

@ -363,8 +363,9 @@
</div>
<div class="form-group m-form__group row">
<div class="col-lg-12">
<label>Click on a row to select a hub</label>
<label name="hub" data-field="hub">Click on a row to select a hub</label>
<div class="form-control-feedback hide" data-field="hub"></div>
<input type="hidden" id="hub-field" name="hub_id" value="">
<div class="table-frame" data-name="hub">
<table id="hubs-table" class="table table-compact table-hover table-clickable m-table">
<thead>
@ -396,10 +397,11 @@
</div>
<div class="form-group m-form__group row">
<div class="col-lg-12">
<label>Click on a row to select a rider</label>
<label name="rider" data-field="rider">Click on a row to select a rider</label>
<div class="form-control-feedback hide" data-field="rider"></div>
<input type="hidden" id="rider-field" name="rider_id" value="">
<div class="table-frame" data-name="rider">
<table id="riders-table" class="table table-compact table-hover table-clickable m-table">
<table id="rider-table" class="table table-compact table-hover table-clickable m-table">
<thead>
<tr>
<th>First Name</th>
@ -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);
});
});