Add validation when submitting a one step job order. #270
This commit is contained in:
parent
b7b673fdaf
commit
ed2975e8d3
3 changed files with 87 additions and 11 deletions
|
|
@ -838,4 +838,30 @@ class JobOrderController extends Controller
|
||||||
// response
|
// response
|
||||||
return $this->render($template, $params);
|
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!'
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
// initialize incoming job order form
|
||||||
public function initializeIncomingForm()
|
public function initializeIncomingForm()
|
||||||
|
|
|
||||||
|
|
@ -363,8 +363,9 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-12">
|
<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>
|
<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">
|
<div class="table-frame" data-name="hub">
|
||||||
<table id="hubs-table" class="table table-compact table-hover table-clickable m-table">
|
<table id="hubs-table" class="table table-compact table-hover table-clickable m-table">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -396,10 +397,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-12">
|
<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>
|
<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">
|
<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>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>First Name</th>
|
<th>First Name</th>
|
||||||
|
|
@ -931,7 +933,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
var selectedHub = "";
|
var selected_hub = '';
|
||||||
$('#hubs-table').on('click', 'tr', function() {
|
$('#hubs-table').on('click', 'tr', function() {
|
||||||
var id = $(this).data('id');
|
var id = $(this).data('id');
|
||||||
|
|
||||||
|
|
@ -941,12 +943,14 @@ $(function() {
|
||||||
$(this).addClass('m-table__row--primary');
|
$(this).addClass('m-table__row--primary');
|
||||||
|
|
||||||
// set hub
|
// set hub
|
||||||
selectedHub = id;
|
selected_hub = id;
|
||||||
|
$('#hub-field').val(selected_hub);
|
||||||
|
|
||||||
// get riders of 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 = '';
|
var rider_table = '';
|
||||||
$.getJSON("{{ url('hub_riders') }}?id=" + selectedHub, function(data) {
|
$.getJSON("{{ url('hub_riders') }}?id=" + selected_hub, function(data) {
|
||||||
var riders = data['riders'];
|
var riders = data['riders'];
|
||||||
for (i in riders) {
|
for (i in riders) {
|
||||||
var rider = riders[i];
|
var rider = riders[i];
|
||||||
|
|
@ -966,17 +970,18 @@ $(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
var selectedRider = "";
|
var selected_rider = '';
|
||||||
$('#riders-table').on('click', 'tr', function() {
|
$('#rider-table').on('click', 'tr', function() {
|
||||||
var id = $(this).data('id');
|
var id = $(this).data('id');
|
||||||
|
|
||||||
// highlight this row
|
// 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');
|
$(this).addClass('m-table__row--primary');
|
||||||
|
|
||||||
// set rider
|
// set rider
|
||||||
selectedRider = id;
|
selected_rider = id;
|
||||||
|
$('#rider-field').val(selected_rider);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue