diff --git a/public/assets/js/dashboard_map.js b/public/assets/js/dashboard_map.js index 3f02d1f4..ce32461f 100644 --- a/public/assets/js/dashboard_map.js +++ b/public/assets/js/dashboard_map.js @@ -3,6 +3,7 @@ class DashboardMap { this.options = options; this.rider_markers = rider_markers; this.cust_markers = cust_markers; + this.rider_availability = {}; // layer groups this.layer_groups = { @@ -253,10 +254,13 @@ class DashboardMap { var lat = data.latitude; var lng = data.longitude; - if (data.has_jo) + if (data.has_jo) { + my.rider_availability[id] = false; my.putRiderActiveJOMarker(id, lat, lng); - else + } else { + my.rider_availability[id] = true; my.putRiderAvailableMarker(id, lat, lng); + } }); // console.log(rider_markers); diff --git a/public/assets/js/map_mqtt.js b/public/assets/js/map_mqtt.js index d277013c..453dd080 100644 --- a/public/assets/js/map_mqtt.js +++ b/public/assets/js/map_mqtt.js @@ -78,7 +78,7 @@ 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); @@ -115,7 +115,7 @@ class MapEventHandler { var obj = JSON.parse(payload); var status = obj.status; - console.log("status " + status); + // console.log("status " + status); switch (status) { case 'rider_offline': this.dashmap.rider_availability[chan_split[1]] = false; @@ -145,6 +145,7 @@ class MapEventHandler { break; } }); + break; } break; } diff --git a/src/Command/RefreshLatestActiveJobOrderCacheCommand.php b/src/Command/RefreshLatestActiveJobOrderCacheCommand.php index c712eaa2..c2284843 100644 --- a/src/Command/RefreshLatestActiveJobOrderCacheCommand.php +++ b/src/Command/RefreshLatestActiveJobOrderCacheCommand.php @@ -48,8 +48,12 @@ class RefreshLatestActiveJobOrderCacheCommand extends Command fwrite($tmp_cache_log, 'Cleared latest active jo cache...' . "\n"); - $date = new DateTime(); - $date->modify('-5 hour'); + // get JOs -5 and +22 hours from current datetime + $start_date = new DateTime(); + $start_date->modify('-5 hour'); + + $end_date = new DateTime(); + $end_date->modify('+22 hour'); $status_list = [ JOStatus::PENDING, @@ -63,9 +67,11 @@ class RefreshLatestActiveJobOrderCacheCommand extends Command ->createQueryBuilder('jo'); $res = $qb->select('jo') ->where('jo.status IN (:statuses)') - ->andWhere('jo.date_schedule >= :date') + ->andWhere('jo.date_schedule >= :start_date') + ->andWhere('jo.date_schedule <= :end_date') ->setParameter('statuses', $status_list, Connection::PARAM_STR_ARRAY) - ->setParameter('date', $date) + ->setParameter('start_date', $start_date) + ->setParameter('end_date', $end_date) ->getQuery() ->execute(); diff --git a/src/Controller/RiderController.php b/src/Controller/RiderController.php index 247123d5..afcd9287 100644 --- a/src/Controller/RiderController.php +++ b/src/Controller/RiderController.php @@ -602,8 +602,9 @@ class RiderController extends Controller */ public function ajaxAvailable(EntityManagerInterface $em, Rider $rider) { - $jo = $rider->getRiderActiveJobOrder(); - if ($jo == null || $jo->isClosed()) + //$jo = $rider->getRiderActiveJobOrder(); + $jo_results = $rider->getActiveJobOrder(); + if (empty($jo_results)) $avail = 'available'; else $avail = 'unavailable'; diff --git a/src/EventListener/JobOrderActiveCacheListener.php b/src/EventListener/JobOrderActiveCacheListener.php index d02bbd09..6c5fa588 100644 --- a/src/EventListener/JobOrderActiveCacheListener.php +++ b/src/EventListener/JobOrderActiveCacheListener.php @@ -8,6 +8,9 @@ use App\Service\JobOrderCache; use App\Ramcar\JOStatus; use App\Entity\JobOrder; +use DateTime; +use DateInterval; + class JobOrderActiveCacheListener { protected $key; @@ -82,7 +85,13 @@ class JobOrderActiveCacheListener $this->jo_cache->addActiveJobOrder($jo); // save in latest JO cache - $this->jo_cache->addLatestActiveJoborder($jo); + // check if date_schedule is more than 24 hours + $date = new DateTime(); + $interval = new DateInterval('P1D'); + $date->sub($interval); + + if ($jo->getDateSchedule() >= $date) + $this->jo_cache->addLatestActiveJoborder($jo); // publish to mqtt $coords = $jo->getCoordinates();