Compare commits

...

4 commits

8 changed files with 130 additions and 111 deletions

View file

@ -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]

View file

@ -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 (my.rider_names.hasOwnProperty(id)) {
name = my.rider_names[id];
if (data.has_jo) if (data.has_jo)
my.putRiderActiveJOMarker(id, lat, lng, name); my.putRiderActiveJOMarker(id, lat, lng, name);
else else
my.putRiderAvailableMarker(id, lat, lng, name); 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);
});
}

View file

@ -79,15 +79,7 @@ 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({
method: "GET",
url: "{{ url('rider_ajax_rider_name') }}",
data: {id: rider_id}
}).done(function(response) {
var name = response.rider_name;
console.log('rider_name ' + name);
switch (chan_split[2]) { switch (chan_split[2]) {
case "availability": case "availability":
console.log("got availability for rider " + chan_split[1] + " - " + payload); console.log("got availability for rider " + chan_split[1] + " - " + payload);
@ -114,12 +106,12 @@ class MapEventHandler {
case 'available': case 'available':
console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng); console.log('putting available marker ' + chan_split[1] + ' ' + lat + ':' + lng);
dashmap.switchRiderStatus(chan_split[1], 'available'); dashmap.switchRiderStatus(chan_split[1], 'available');
dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name); dashmap.putRiderAvailableMarker(chan_split[1], lat, lng);
break; break;
case 'unavailable': case 'unavailable':
console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng); console.log('putting active jo marker ' + chan_split[1] + ' ' + lat + ':' + lng);
dashmap.switchRiderStatus(chan_split[1], 'jo'); dashmap.switchRiderStatus(chan_split[1], 'jo');
dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng, name); dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng);
break; break;
} }
}); });
@ -127,7 +119,7 @@ class MapEventHandler {
} }
break; break;
case "location": case "location":
// console.log("got location for rider " + chan_split[1] + " - " + payload); // console.log("got location for rider " + chan_split[1] + " - " + payload
var pl_split = payload.split(':'); var pl_split = payload.split(':');
// console.log(pl_split); // console.log(pl_split);
@ -151,7 +143,7 @@ class MapEventHandler {
// TODO: cache rider availability (available vs active jo) status and check before displaying icon // 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 // NOTE: we really should fix our terms since available can mean many things
if (display_marker) { if (display_marker) {
this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng, name); this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng);
} }
break; break;
case "status": case "status":
@ -170,7 +162,6 @@ class MapEventHandler {
} }
break; break;
} }
});
} }
handleJobOrder(chan_split, payload) { handleJobOrder(chan_split, payload) {

View file

@ -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;

View file

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

View file

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

View file

@ -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;

View file

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