Compare commits
4 commits
master
...
cmb-releas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
166c4942f1 | ||
|
|
b1d397c127 | ||
|
|
b20c61a830 | ||
|
|
74039a8011 |
8 changed files with 130 additions and 111 deletions
|
|
@ -63,6 +63,7 @@ rider_ajax_avialable:
|
||||||
methods: [GET]
|
methods: [GET]
|
||||||
|
|
||||||
rider_ajax_rider_name:
|
rider_ajax_rider_name:
|
||||||
path: /riders/rider_name
|
path: /riders/{id}/name
|
||||||
controller: App\Controller\RiderController::ajaxRiderName
|
controller: App\Controller\RiderController::ajaxRiderName
|
||||||
methods: [GET]
|
methods: [GET]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ class DashboardMap {
|
||||||
this.rider_markers = rider_markers;
|
this.rider_markers = rider_markers;
|
||||||
this.cust_markers = cust_markers;
|
this.cust_markers = cust_markers;
|
||||||
this.rider_availability = {};
|
this.rider_availability = {};
|
||||||
|
this.rider_names = {};
|
||||||
|
|
||||||
// layer groups
|
// layer groups
|
||||||
this.layer_groups = {
|
this.layer_groups = {
|
||||||
|
|
@ -302,15 +303,43 @@ class DashboardMap {
|
||||||
$.each(riders, function(id, data) {
|
$.each(riders, function(id, data) {
|
||||||
var lat = data.latitude;
|
var lat = data.latitude;
|
||||||
var lng = data.longitude;
|
var lng = data.longitude;
|
||||||
var name = data.name;
|
var name = '';
|
||||||
|
|
||||||
if (data.has_jo)
|
if (my.rider_names.hasOwnProperty(id)) {
|
||||||
my.putRiderActiveJOMarker(id, lat, lng, name);
|
name = my.rider_names[id];
|
||||||
else
|
|
||||||
my.putRiderAvailableMarker(id, lat, lng, name);
|
if (data.has_jo)
|
||||||
|
my.putRiderActiveJOMarker(id, lat, lng, name);
|
||||||
|
else
|
||||||
|
my.putRiderAvailableMarker(id, lat, lng, name)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
getRiderName(id, my.options.rider_name_url, function(name) {
|
||||||
|
my.rider_names[id] = name;
|
||||||
|
|
||||||
|
if (data.has_jo)
|
||||||
|
my.putRiderActiveJOMarker(id, lat, lng, name);
|
||||||
|
else
|
||||||
|
my.putRiderAvailableMarker(id, lat, lng, name)
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// console.log(rider_markers);
|
// console.log(rider_markers);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getRiderName(id, url, callback) {
|
||||||
|
var name = '';
|
||||||
|
var rider_url = url.replace('[id]', id);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
method: "GET",
|
||||||
|
url: rider_url
|
||||||
|
}).done(function(response) {
|
||||||
|
name = response.rider_name;
|
||||||
|
callback(name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,98 +79,89 @@ class MapEventHandler {
|
||||||
|
|
||||||
handleRider(chan_split, payload) {
|
handleRider(chan_split, payload) {
|
||||||
// console.log("rider message");
|
// console.log("rider message");
|
||||||
// get rider name using chan_split[1] which is rider id
|
|
||||||
var rider_id = chan_split[1];
|
var rider_id = chan_split[1];
|
||||||
$.ajax({
|
switch (chan_split[2]) {
|
||||||
method: "GET",
|
case "availability":
|
||||||
url: "{{ url('rider_ajax_rider_name') }}",
|
console.log("got availability for rider " + chan_split[1] + " - " + payload);
|
||||||
data: {id: rider_id}
|
var obj = JSON.parse(payload);
|
||||||
}).done(function(response) {
|
|
||||||
var name = response.rider_name;
|
|
||||||
console.log('rider_name ' + name);
|
|
||||||
switch (chan_split[2]) {
|
|
||||||
case "availability":
|
|
||||||
console.log("got availability for rider " + chan_split[1] + " - " + payload);
|
|
||||||
var obj = JSON.parse(payload);
|
|
||||||
|
|
||||||
var status = obj.status;
|
var status = obj.status;
|
||||||
console.log("status " + status);
|
console.log("status " + status);
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 'rider_offline':
|
case 'rider_offline':
|
||||||
this.dashmap.rider_availability[chan_split[1]] = false;
|
this.dashmap.rider_availability[chan_split[1]] = false;
|
||||||
this.dashmap.removeRiderMarker(chan_split[1]);
|
this.dashmap.removeRiderMarker(chan_split[1]);
|
||||||
break;
|
|
||||||
case 'rider_online':
|
|
||||||
this.dashmap.rider_availability[chan_split[1]] = true;
|
|
||||||
var lat = parseFloat(obj.latitude);
|
|
||||||
var lng = parseFloat(obj.longitude);
|
|
||||||
|
|
||||||
// cheeck if rider is available / unavailable
|
|
||||||
// TODO: make url not hardcoded
|
|
||||||
var dashmap = this.dashmap;
|
|
||||||
$.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) {
|
|
||||||
console.log('rider availability - ' + data);
|
|
||||||
switch (data) {
|
|
||||||
case 'available':
|
|
||||||
console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng);
|
|
||||||
dashmap.switchRiderStatus(chan_split[1], 'available');
|
|
||||||
dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name);
|
|
||||||
break;
|
|
||||||
case 'unavailable':
|
|
||||||
console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng);
|
|
||||||
dashmap.switchRiderStatus(chan_split[1], 'jo');
|
|
||||||
dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng, name);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "location":
|
|
||||||
// console.log("got location for rider " + chan_split[1] + " - " + payload);
|
|
||||||
var pl_split = payload.split(':');
|
|
||||||
// console.log(pl_split);
|
|
||||||
|
|
||||||
// check for correct format
|
|
||||||
if (pl_split.length != 2)
|
|
||||||
break;
|
break;
|
||||||
|
case 'rider_online':
|
||||||
|
this.dashmap.rider_availability[chan_split[1]] = true;
|
||||||
|
var lat = parseFloat(obj.latitude);
|
||||||
|
var lng = parseFloat(obj.longitude);
|
||||||
|
|
||||||
var lat = parseFloat(pl_split[0]);
|
// cheeck if rider is available / unavailable
|
||||||
var lng = parseFloat(pl_split[1]);
|
// TODO: make url not hardcoded
|
||||||
|
var dashmap = this.dashmap;
|
||||||
|
$.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) {
|
||||||
|
console.log('rider availability - ' + data);
|
||||||
|
switch (data) {
|
||||||
|
case 'available':
|
||||||
|
console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng);
|
||||||
|
dashmap.switchRiderStatus(chan_split[1], 'available');
|
||||||
|
dashmap.putRiderAvailableMarker(chan_split[1], lat, lng);
|
||||||
|
break;
|
||||||
|
case 'unavailable':
|
||||||
|
console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng);
|
||||||
|
dashmap.switchRiderStatus(chan_split[1], 'jo');
|
||||||
|
dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "location":
|
||||||
|
// console.log("got location for rider " + chan_split[1] + " - " + payload
|
||||||
|
var pl_split = payload.split(':');
|
||||||
|
// console.log(pl_split);
|
||||||
|
|
||||||
var display_marker = true;
|
// check for correct format
|
||||||
if (this.dashmap.rider_availability.hasOwnProperty(chan_split[1])) {
|
if (pl_split.length != 2)
|
||||||
if (!this.dashmap.rider_availability[chan_split[1]]) {
|
|
||||||
console.log('NOT displaying marker for inactive rider');
|
|
||||||
display_marker = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log('rider not in availability check');
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: cache rider availability (available vs active jo) status and check before displaying icon
|
|
||||||
// NOTE: we really should fix our terms since available can mean many things
|
|
||||||
if (display_marker) {
|
|
||||||
this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "status":
|
|
||||||
console.log("got status for rider " + chan_split[1] + " - " + payload);
|
var lat = parseFloat(pl_split[0]);
|
||||||
switch (payload) {
|
var lng = parseFloat(pl_split[1]);
|
||||||
case 'available':
|
|
||||||
this.dashmap.switchRiderStatus(chan_split[1], 'available');
|
var display_marker = true;
|
||||||
break;
|
if (this.dashmap.rider_availability.hasOwnProperty(chan_split[1])) {
|
||||||
case 'jo':
|
if (!this.dashmap.rider_availability[chan_split[1]]) {
|
||||||
console.log('jo status');
|
console.log('NOT displaying marker for inactive rider');
|
||||||
this.dashmap.switchRiderStatus(chan_split[1], 'jo');
|
display_marker = false;
|
||||||
break;
|
|
||||||
case 'logout':
|
|
||||||
this.dashmap.removeRiderMarker(chan_split[1]);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
}
|
console.log('rider not in availability check');
|
||||||
});
|
}
|
||||||
|
|
||||||
|
// TODO: cache rider availability (available vs active jo) status and check before displaying icon
|
||||||
|
// NOTE: we really should fix our terms since available can mean many things
|
||||||
|
if (display_marker) {
|
||||||
|
this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "status":
|
||||||
|
console.log("got status for rider " + chan_split[1] + " - " + payload);
|
||||||
|
switch (payload) {
|
||||||
|
case 'available':
|
||||||
|
this.dashmap.switchRiderStatus(chan_split[1], 'available');
|
||||||
|
break;
|
||||||
|
case 'jo':
|
||||||
|
console.log('jo status');
|
||||||
|
this.dashmap.switchRiderStatus(chan_split[1], 'jo');
|
||||||
|
break;
|
||||||
|
case 'logout':
|
||||||
|
this.dashmap.removeRiderMarker(chan_split[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleJobOrder(chan_split, payload) {
|
handleJobOrder(chan_split, payload) {
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,6 @@ class HomeController extends Controller
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get full name of rider
|
|
||||||
$name = $rider->getFullName();
|
|
||||||
$riders[$rider_id]['name'] = $name;
|
|
||||||
|
|
||||||
$jo = $rider->getActiveJobOrder();
|
$jo = $rider->getActiveJobOrder();
|
||||||
if ($jo == null)
|
if ($jo == null)
|
||||||
$riders[$rider_id]['has_jo'] = false;
|
$riders[$rider_id]['has_jo'] = false;
|
||||||
|
|
|
||||||
|
|
@ -616,11 +616,11 @@ class RiderController extends Controller
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ajaxRiderName(EntityManagerInterface $em, Request $req)
|
/**
|
||||||
|
* @ParamConverter("rider", class="App\Entity\Rider")
|
||||||
|
*/
|
||||||
|
public function ajaxRiderName(EntityManagerInterface $em, Rider $rider)
|
||||||
{
|
{
|
||||||
$rider_id = $req->query->get('id');
|
|
||||||
|
|
||||||
$rider = $em->getRepository(Rider::class)->find($rider_id);
|
|
||||||
$rider_name = '';
|
$rider_name = '';
|
||||||
if ($rider != null)
|
if ($rider != null)
|
||||||
$rider_name = $rider->getFullName();
|
$rider_name = $rider->getFullName();
|
||||||
|
|
@ -629,4 +629,5 @@ class RiderController extends Controller
|
||||||
'rider_name' => $rider_name,
|
'rider_name' => $rider_name,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,13 @@ class CMBServiceType extends NameValue
|
||||||
{
|
{
|
||||||
const BATTERY_REPLACEMENT_NEW = 'battery_new';
|
const BATTERY_REPLACEMENT_NEW = 'battery_new';
|
||||||
const BATTERY_REPLACEMENT_WARRANTY = 'battery_warranty';
|
const BATTERY_REPLACEMENT_WARRANTY = 'battery_warranty';
|
||||||
|
const WARRANTY_CLAIM = 'warranty_claim';
|
||||||
const JUMPSTART = 'jumpstart';
|
const JUMPSTART = 'jumpstart';
|
||||||
|
|
||||||
const COLLECTION = [
|
const COLLECTION = [
|
||||||
'battery_new' => 'Battery Sales',
|
'battery_new' => 'Battery Sales',
|
||||||
'battery_warranty' => 'Under Warranty',
|
'battery_warranty' => 'Warranty Replacement',
|
||||||
|
'warranty_claim' => 'Warranty Claim',
|
||||||
'jumpstart' => 'Jumpstart',
|
'jumpstart' => 'Jumpstart',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,10 @@ class CMBInvoiceGenerator implements InvoiceGeneratorInterface
|
||||||
case CMBServiceType::BATTERY_REPLACEMENT_WARRANTY:
|
case CMBServiceType::BATTERY_REPLACEMENT_WARRANTY:
|
||||||
$this->processWarranty($total, $criteria, $invoice);
|
$this->processWarranty($total, $criteria, $invoice);
|
||||||
break;
|
break;
|
||||||
|
case CMBServiceType::WARRANTY_CLAIM:
|
||||||
|
// TODO: this will change once we confirm what needs to be computed
|
||||||
|
$this->processOtherServices($total, $invoice, $stype);
|
||||||
|
break;
|
||||||
//case ServiceType::POST_RECHARGED:
|
//case ServiceType::POST_RECHARGED:
|
||||||
// $this->processRecharge($total, $invoice);
|
// $this->processRecharge($total, $invoice);
|
||||||
// break;
|
// break;
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ function initMap(r_markers, c_markers, icons) {
|
||||||
'zoom': 13,
|
'zoom': 13,
|
||||||
'rider_popup_url': '/riders/[id]/popup',
|
'rider_popup_url': '/riders/[id]/popup',
|
||||||
'cust_popup_url': '/job-order/[id]/popup',
|
'cust_popup_url': '/job-order/[id]/popup',
|
||||||
'icons': icons
|
'icons': icons,
|
||||||
|
'rider_name_url': '/riders/[id]/name'
|
||||||
};
|
};
|
||||||
|
|
||||||
var dashmap = new DashboardMap(options, r_markers, c_markers);
|
var dashmap = new DashboardMap(options, r_markers, c_markers);
|
||||||
|
|
@ -45,7 +46,7 @@ function initMap(r_markers, c_markers, icons) {
|
||||||
return dashmap;
|
return dashmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
function initEventHandler(dashmap, icons, ssl) {
|
function initEventHandler(dashmap) {
|
||||||
var options = {
|
var options = {
|
||||||
'track_jo': true,
|
'track_jo': true,
|
||||||
'track_rider': true,
|
'track_rider': true,
|
||||||
|
|
@ -54,12 +55,11 @@ function initEventHandler(dashmap, icons, ssl) {
|
||||||
'rider_status': 'rider/+/status',
|
'rider_status': 'rider/+/status',
|
||||||
'jo_location': 'jo/+/location',
|
'jo_location': 'jo/+/location',
|
||||||
'jo_status': 'jo/+/status',
|
'jo_status': 'jo/+/status',
|
||||||
'jo_origin': 'jo/+/origin',
|
'jo_origin': 'jo/+/origin'
|
||||||
'rider_availability': 'rider/+/availability'
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
var event_handler = new MapEventHandler(options, dashmap, ssl);
|
var event_handler = new MapEventHandler(options, dashmap);
|
||||||
event_handler.connect('{{ app.user.getID }}', '{{ mqtt_host }}', {{ mqtt_port }});
|
event_handler.connect('{{ app.user.getID }}', '{{ mqtt_host }}', {{ mqtt_port }});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,13 +95,8 @@ var icons = {
|
||||||
var r_markers = {};
|
var r_markers = {};
|
||||||
var c_markers = {};
|
var c_markers = {};
|
||||||
|
|
||||||
var ssl = false;
|
|
||||||
{% if ssl_enable == 'true' %}
|
|
||||||
ssl = true;
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
var dashmap = initMap(r_markers, c_markers, icons);
|
var dashmap = initMap(r_markers, c_markers, icons);
|
||||||
initEventHandler(dashmap, icons, ssl);
|
initEventHandler(dashmap, icons);
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue