From b24bae37889427c071ba8cc033e77ed70405a189 Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Thu, 16 Jul 2020 14:19:16 +0800 Subject: [PATCH] Add rider availability ajax call #424 --- config/routes/rider.yaml | 5 +++++ public/assets/js/map_mqtt.js | 20 ++++++++++++++++---- src/Controller/RiderController.php | 19 +++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/config/routes/rider.yaml b/config/routes/rider.yaml index 1934a1b1..da41058d 100644 --- a/config/routes/rider.yaml +++ b/config/routes/rider.yaml @@ -56,3 +56,8 @@ 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 b1bfa7b2..7088d110 100644 --- a/public/assets/js/map_mqtt.js +++ b/public/assets/js/map_mqtt.js @@ -85,7 +85,6 @@ class MapEventHandler { var obj = JSON.parse(payload); var status = obj.status; - console.log(status); console.log("status " + status); switch (status) { case 'rider_offline': @@ -94,14 +93,27 @@ class MapEventHandler { case 'rider_online': var lat = parseFloat(obj.latitude); var lng = parseFloat(obj.longitude); - this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); + + // cheeck if rider is available / unavailable + // TODO: make url not hardcoded + $.get('https://cmbdev.wildcard.cc/riders/' + chan_split[1] + '/available').done(function(data) { + console.log('rider availability - ' + data); + switch (data) { + case 'available': + this.dashmap.putRiderAvailableMarker(chan_split[1], lat, lng); + break; + case 'unavailable': + this.dashmap.putRiderActiveJOMarker(chan_split[1], lat, lng); + break; + } + } break; } break; 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(':'); - console.log(pl_split); + // console.log(pl_split); // check for correct format if (pl_split.length != 2) diff --git a/src/Controller/RiderController.php b/src/Controller/RiderController.php index 43f5d6d6..6ceae155 100644 --- a/src/Controller/RiderController.php +++ b/src/Controller/RiderController.php @@ -596,4 +596,23 @@ class RiderController extends Controller return $this->redirecttoRoute('rider_update', ['id' => $rider->getID()]); } + + /** + * @ParamConverter("rider", class="App\Entity\Rider") + */ + public function ajaxAvailable(EntityManagerInterface $em, Rider $rider) + { + $jos = $rider->getOpenJobOrders(); + if (count($jos) > 0) + $avail = 'available'; + else + $avail = 'unavaiable'; + + $response = new Response( + 'active', + Response::HTTP_OK, + ['content-type' => 'text/plain'] + ); + return $response; + } }