Fix job order form to use hubs instead of outlets #17

This commit is contained in:
Ramon Gutierrez 2018-02-19 14:11:56 +08:00
parent d4cc431bac
commit e124b0cebd
3 changed files with 53 additions and 85 deletions

View file

@ -558,6 +558,14 @@ class JobOrderController extends BaseController
throw $this->createNotFoundException('The job order does not have an assigning status');
}
// check if hub is assigned to current user
$user_hubs = $this->getUser()->getHubs();
if (!in_array($obj->getHub()->getID(), $user_hubs))
{
$em->getConnection()->rollback();
throw $this->createNotFoundException('The job order is not on a hub assigned to this user');
}
// check if we are the assignor
$assignor = $obj->getAssignedBy();
$user = $this->getUser();

View file

@ -60,7 +60,7 @@ class MapTools
public function getClosestHubs(Point $point, $limit, $time = false)
{
// get closest hubs based on st_distance function from db
$query = $this->em->createQuery('SELECT h, st_distance(o.coordinates, point(:lng, :lat)) as dist FROM App\Entity\Hub h' . ($time ? ' WHERE :time BETWEEN h.time_open AND h.time_close' : '') . ' ORDER BY dist')
$query = $this->em->createQuery('SELECT h, st_distance(h.coordinates, point(:lng, :lat)) as dist FROM App\Entity\Hub h' . ($time ? ' WHERE :time BETWEEN h.time_open AND h.time_close' : '') . ' ORDER BY dist')
->setParameter('lat', $point->getLatitude())
->setParameter('lng', $point->getLongitude());

View file

@ -379,18 +379,18 @@
<div class="m-form__section m-form__section--last">
<div class="m-form__heading">
<h3 class="m-form__heading-title">
Nearest Outlets
Nearest Hubs
</h3>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-12">
<label>Click on a row to select an outlet</label>
<div class="form-control-feedback hide" data-field="outlet"></div>
<div class="table-frame" data-name="outlet">
<table id="outlets-table" class="table table-compact table-hover table-clickable m-table">
<label>Click on a row to select a hub</label>
<div class="form-control-feedback hide" data-field="hub"></div>
<div class="table-frame" data-name="hub">
<table id="hubs-table" class="table table-compact table-hover table-clickable m-table">
<thead>
<tr>
<th>Outlet</th>
<th>Hub</th>
<th>Branch</th>
<th class="text-right">Distance</th>
<th class="text-right">Travel Time</th>
@ -399,21 +399,21 @@
<th>Contact Numbers</th> </tr>
</thead>
<tbody>
<tr class="placeholder-row{{ outlets|length > 0 ? ' hide' }}">
<tr class="placeholder-row{{ hubs|length > 0 ? ' hide' }}">
<td colspan="7">
No items to display.
</td>
</tr>
{% for outlet in outlets %}
<tr data-lat="{{ outlet.outlet.getCoordinates.getLatitude }}" data-lng="{{ outlet.outlet.getCoordinates.getLongitude }}" data-id="{{ outlet.outlet.getID }}"{{ obj.getOutlet and obj.getOutlet.getID == outlet.outlet.getID ? ' class="m-table__row--primary"' }}>
<td>{{ outlet.outlet.getName }}</td>
<td>{{ outlet.outlet.getBranch }}</td>
<td class="text-right">{{ outlet.distance ? outlet.distance : '-' }}</td>
<td class="text-right">{{ outlet.duration ? outlet.duration : '-' }}</td>
{% for hub in hubs %}
<tr data-lat="{{ hub.hub.getCoordinates.getLatitude }}" data-lng="{{ hub.hub.getCoordinates.getLongitude }}" data-id="{{ hub.hub.getID }}"{{ obj.getHub and obj.getHub.getID == hub.hub.getID ? ' class="m-table__row--primary"' }}>
<td>{{ hub.hub.getName }}</td>
<td>{{ hub.hub.getBranch }}</td>
<td class="text-right">{{ hub.distance ? hub.distance : '-' }}</td>
<td class="text-right">{{ hub.duration ? hub.duration : '-' }}</td>
<td class="text-right">0</td>
<td class="text-right">0</td>
<td>{{ outlet.outlet.getContactNumbers }}</td>
<td>{{ hub.hub.getContactNumbers }}</td>
</tr>
{% endfor %}
</tbody>
@ -422,12 +422,12 @@
</div>
</div>
</div>
<div id="outlet_map" style="height:600px;"></div>
<div id="hub_map" style="height:600px;"></div>
{% endif %}
{% if mode == 'update-assigning' %}
<div class="m-form__seperator m-form__seperator--dashed"></div>
{% if obj.getOutlet.getHub %}
{% if obj.getHub %}
<div class="m-form__section">
<div class="m-form__heading">
<h3 class="m-form__heading-title">
@ -437,17 +437,17 @@
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="hub_name">Name</label>
<input type="text" name="hub_name" id="hub-name" class="form-control m-input" value="{{ obj.getOutlet.getHub.getName }}" disabled>
<input type="text" name="hub_name" id="hub-name" class="form-control m-input" value="{{ obj.getHub.getName }}" disabled>
<div class="form-control-feedback hide" data-field="hub_name"></div>
</div>
<div class="col-lg-3">
<label data-field="hub_time_open">Time Open</label>
<input type="text" name="hub_time_open" id="hub-time-open" class="form-control m-input" value="{{obj.getOutlet.getHub.getTimeOpen|date("g:i A") }}" disabled>
<input type="text" name="hub_time_open" id="hub-time-open" class="form-control m-input" value="{{obj.getHub.getTimeOpen|date("g:i A") }}" disabled>
<div class="form-control-feedback hide" data-field="hub_time_open"></div>
</div>
<div class="col-lg-3">
<label data-field="hub_time_close">Time Close</label>
<input type="text" name="hub_time_close" id="hub-time-close" class="form-control m-input" value="{{ obj.getOutlet.getHub.getTimeClose|date("g:i A") }}" disabled>
<input type="text" name="hub_time_close" id="hub-time-close" class="form-control m-input" value="{{ obj.getHub.getTimeClose|date("g:i A") }}" disabled>
<div class="form-control-feedback hide" data-field="hub_time_close"></div>
</div>
</div>
@ -456,59 +456,19 @@
<label data-field="hub_address">
Address
</label>
<textarea class="form-control m-input" id="hub-address" rows="4" name="hub_address" disabled>{{ obj.getOutlet.getHub.getAddress }}</textarea>
<textarea class="form-control m-input" id="hub-address" rows="4" name="hub_address" disabled>{{ obj.getHub.getAddress }}</textarea>
<div class="form-control-feedback hide" data-field="hub_address"></div>
</div>
<div class="col-lg-6">
<label data-field="contact_nums">
Contact Numbers
</label>
<textarea class="form-control m-input" id="hub-contact-nums" rows="4" name="hub_contact_nums" disabled>{{ obj.getOutlet.getHub.getContactNumbers }}</textarea>
<textarea class="form-control m-input" id="hub-contact-nums" rows="4" name="hub_contact_nums" disabled>{{ obj.getHub.getContactNumbers }}</textarea>
<div class="form-control-feedback hide" data-field="hub_contact_nums"></div>
</div>
</div>
</div>
{% endif %}
<div class="m-form__section">
<div class="m-form__heading">
<h3 class="m-form__heading-title">
Outlet Details
</h3>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="outlet_name">Name</label>
<input type="text" name="outlet_name" id="outlet-name" class="form-control m-input" value="{{ obj.getOutlet.getName }}" disabled>
<div class="form-control-feedback hide" data-field="outlet_name"></div>
</div>
<div class="col-lg-3">
<label data-field="outlet_time_open">Time Open</label>
<input type="text" name="outlet_time_open" id="outlet-time-open" class="form-control m-input" value="{{ obj.getOutlet.getTimeOpen|date("g:i A") }}" disabled>
<div class="form-control-feedback hide" data-field="outlet_time_open"></div>
</div>
<div class="col-lg-3">
<label data-field="outlet_time_close">Time Close</label>
<input type="text" name="outlet_time_close" id="outlet-time-close" class="form-control m-input" value="{{ obj.getOutlet.getTimeClose|date("g:i A") }}" disabled>
<div class="form-control-feedback hide" data-field="outlet_time_close"></div>
</div>
</div>
<div class="form-group m-form__group row">
<div class="col-lg-6">
<label data-field="outlet_address">
Address
</label>
<textarea class="form-control m-input" id="outlet-address" rows="4" name="outlet_address" disabled>{{ obj.getOutlet.getAddress }}</textarea>
<div class="form-control-feedback hide" data-field="outlet_address"></div>
</div>
<div class="col-lg-6">
<label data-field="contact_nums">
Contact Numbers
</label>
<textarea class="form-control m-input" id="outlet-contact-nums" rows="4" name="hub_contact_nums" disabled>{{ obj.getOutlet.getContactNumbers }}</textarea>
<div class="form-control-feedback hide" data-field="hub_contact_nums"></div>
</div>
</div>
</div>
<div class="m-form__seperator m-form__seperator--dashed"></div>
<div class="m-form__section m-form__section--last">
<div class="m-form__heading">
@ -533,14 +493,14 @@
</tr>
</thead>
<tbody>
<tr class="placeholder-row{{ obj.getOutlet.getHub and obj.getOutlet.getHub.getRiders|length > 0 ? ' hide' }}">
<tr class="placeholder-row{{ obj.getHub and obj.getHub.getRiders|length > 0 ? ' hide' }}">
<td colspan="6">
No items to display.
</td>
</tr>
{% if obj.getOutlet.getHub %}
{% for rider in obj.getOutlet.getHub.getRiders %}
{% if obj.getHub %}
{% for rider in obj.getHub.getRiders %}
<tr data-id="{{ rider.getID }}"{{ obj.getRider and obj.getRider.getID == rider.getID ? ' class="m-table__row--primary"' }}>
<td>
<div class="user-portrait-sm" style="background-image: url('{{ rider.getImageFile ? "/uploads/" ~ rider.getImageFile : "/assets/images/user.gif" }}');"></div>
@ -653,14 +613,14 @@ $(function() {
{% endif %}
{% if mode == 'update-processing' %}
// display outlet map
var omap = new GMaps({
div: '#outlet_map',
// display hub map
var hmap = new GMaps({
div: '#hub_map',
lat: {{ obj.getCoordinates.getLatitude }},
lng: {{ obj.getCoordinates.getLongitude }}
});
omap.addMarker({
hmap.addMarker({
lat: {{ obj.getCoordinates.getLatitude }},
lng: {{ obj.getCoordinates.getLongitude }},
icon: '/assets/images/icon-destination.png',
@ -668,12 +628,12 @@ $(function() {
content: "Destination"
});
{% for outlet in outlets %}
omap.addMarker({
lat: {{ outlet.outlet.getCoordinates.getLatitude }},
lng: {{ outlet.outlet.getCoordinates.getLongitude }},
title: "{{ outlet.outlet.getName }}",
content: "{{ outlet.outlet.getName }}",
{% for hub in hubs %}
hmap.addMarker({
lat: {{ hub.hub.getCoordinates.getLatitude }},
lng: {{ hub.hub.getCoordinates.getLongitude }},
title: "{{ hub.hub.getName }}",
content: "{{ hub.hub.getName }}",
icon: '/assets/images/icon-outlet.png'
});
{% endfor %}
@ -695,8 +655,8 @@ $(function() {
fields['invoice_items'] = invoiceItems;
{% if mode == 'update-processing' %}
// add selected outlet to data
fields['outlet'] = selectedOutlet;
// add selected hub to data
fields['hub'] = selectedHub;
{% endif %}
{% if mode == 'update-assigning' %}
@ -1049,21 +1009,21 @@ $(function() {
*/
{% if mode == 'update-processing' %}
var selectedOutlet = '{{ obj.getOutlet ? obj.getOutlet.getID : "" }}';
var selectedHub = '{{ obj.getHub ? obj.getHub.getID : "" }}';
$("#outlets-table tbody tr").click(function() {
$("#hubs-table tbody tr").click(function() {
var id = $(this).data('id');
var lat = $(this).data('lat');
var lng = $(this).data('lng');
if (id != selectedOutlet) {
// highlight this row, set outlet value
$("#outlets-table").find('.m-table__row--primary').removeClass('m-table__row--primary');
if (id != selectedHub) {
// highlight this row, set hub value
$("#hubs-table").find('.m-table__row--primary').removeClass('m-table__row--primary');
$(this).addClass('m-table__row--primary');
// set value
selectedOutlet = id;
selectedHub = id;
// center the map
omap.setCenter(lat, lng);
@ -1072,7 +1032,7 @@ $(function() {
$(this).removeClass('m-table__row--primary');
// remove id value
selectedOutlet = '';
selectedHub = '';
}
});
{% endif %}
@ -1084,7 +1044,7 @@ $(function() {
var id = $(this).data('id');
if (id != selectedRider) {
// highlight this row, set outlet value
// highlight this row, set hub value
$("#riders-table").find('.m-table__row--primary').removeClass('m-table__row--primary');
$(this).addClass('m-table__row--primary');