diff --git a/config/routes/rider.yaml b/config/routes/rider.yaml index 1934a1b1..b1c79186 100644 --- a/config/routes/rider.yaml +++ b/config/routes/rider.yaml @@ -56,3 +56,7 @@ rider_priority_down_jo: path: /riders/{id}/priority_down/{jo_id} controller: App\Controller\RiderController::priorityDownJO methods: [GET] +rider_ajax_avialable: + path: /riders/{id}/available + controller: App\Controller\RiderController::ajaxAvailable + methods: [GET] diff --git a/public/assets/js/map_mqtt.js b/public/assets/js/map_mqtt.js index 0e6bdb31..4a181991 100644 --- a/public/assets/js/map_mqtt.js +++ b/public/assets/js/map_mqtt.js @@ -73,13 +73,54 @@ class MapEventHandler { } handleRider(chan_split, payload) { - console.log("rider message"); + // console.log("rider message"); switch (chan_split[2]) { case "location": console.log("got location for rider " + chan_split[1] + " - " + payload); var pl_split = payload.split(':'); console.log(pl_split); + 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; + console.log("status " + status); + switch (status) { + case 'rider_offline': + this.dashmap.rider_availability[chan_split[1]] = false; + 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); + 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); // check for correct format if (pl_split.length != 2) break; @@ -89,6 +130,22 @@ class MapEventHandler { // TODO: check if available or not this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); + + var display_marker = true; + if (this.dashmap.rider_availability.hasOwnProperty(chan_split[1])) { + 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); + } break; case "status": console.log("got status for rider " + chan_split[1] + " - " + payload); diff --git a/src/Ramcar/CMBServiceType.php b/src/Ramcar/CMBServiceType.php index 63d18f96..607b9c43 100644 --- a/src/Ramcar/CMBServiceType.php +++ b/src/Ramcar/CMBServiceType.php @@ -6,11 +6,13 @@ class CMBServiceType extends NameValue { const BATTERY_REPLACEMENT_NEW = 'battery_new'; const BATTERY_REPLACEMENT_WARRANTY = 'battery_warranty'; + const WARRANTY_CLAIM = 'warranty_claim'; const JUMPSTART = 'jumpstart'; const COLLECTION = [ 'battery_new' => 'Battery Sales', - 'battery_warranty' => 'Under Warranty', + 'battery_warranty' => 'Warranty Replacement', + 'warranty_claim' => 'Warranty Claim', 'jumpstart' => 'Jumpstart', ]; } diff --git a/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php b/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php index 534600fb..ba94d8ee 100644 --- a/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php +++ b/src/Service/InvoiceGenerator/CMBInvoiceGenerator.php @@ -86,6 +86,10 @@ class CMBInvoiceGenerator implements InvoiceGeneratorInterface case CMBServiceType::BATTERY_REPLACEMENT_WARRANTY: $this->processWarranty($total, $criteria, $invoice); 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: // $this->processRecharge($total, $invoice); // break;