diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 5f88b057..4b2a0ee5 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -2404,9 +2404,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $hub['distance'] = false; } + // get rider counts + $rider_counts = $this->getHubRiderCounts($hub['hub']); + // counters - $hub['rider_count'] = count($hub['hub']->getAvailableRiders()); + // get only the active riders for the total rider count per hub + // $hub['rider_count'] = count($hub['hub']->getAvailableRiders()); + $hub['rider_count'] = count($hub['hub']->getActiveRiders()); $hub['redis_jo_count'] = $hub['jo_count']; + + $hub['rider_logged_in'] = $rider_counts['logged_in']; + $hub['rider_in_transit'] = $rider_counts['in_transit']; + $hub['rider_available'] = $rider_counts['available']; + //$hub['redis_jo_count'] = 0; // $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders()); $hub['jo_count'] = $hub['redis_jo_count']; @@ -2715,10 +2725,20 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $hub['distance'] = false; } + // get rider counts + $rider_counts = $this->getHubRiderCounts($hub['hub']); + // counters - $hub['rider_count'] = count($hub['hub']->getAvailableRiders()); + // get only the active riders for the total rider count per hub + // $hub['rider_count'] = count($hub['hub']->getAvailableRiders()); + $hub['rider_count'] = count($hub['hub']->getActiveRiders()); // $hub['redis_jo_count'] = $hub['jo_count']; $hub['redis_jo_count'] = 0; + + $hub['rider_logged_in'] = $rider_counts['logged_in']; + $hub['rider_in_transit'] = $rider_counts['in_transit']; + $hub['rider_available'] = $rider_counts['available']; + // $hub['jo_count'] = count($hub['hub']->getForAssignmentJobOrders()); $hub['jo_count'] = $hub['redis_jo_count']; @@ -3273,6 +3293,34 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface return false; } + protected function getHubRiderCounts($hub) + { + $em = $this->em; + + $hub_id = $hub->getID(); + + // get in transit rider count aka flag_available is false AND current_jo_id is not null + $in_transit_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = false AND r.current_job_order IS NOT NULL'); + $in_transit_query->setParameters(['hub_id' => $hub_id]); + $in_transit_count = $in_transit_query->getSingleScalarResult(); + + // get available rider count aka flag_available is true AND current_jo_id is null + $available_query = $em->createQuery('SELECT count(r.id) FROM App\Entity\Rider r JOIN r.hub h WHERE h.id = :hub_id AND r.flag_available = true AND r.current_job_order IS NULL'); + $available_query->setParameters(['hub_id' => $hub_id]); + $available_count = $available_query->getSingleScalarResult(); + + // on duty count = in transit + available + $logged_in_count = $in_transit_count + $available_count; + + $rider_count = [ + 'logged_in' => $logged_in_count, + 'in_transit' => $in_transit_count, + 'available' => $available_count, + ]; + + return $rider_count; + } + protected function fillDropdownParameters(&$params) { $em = $this->em; diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index e57f8114..769c2825 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -754,7 +754,10 @@ - Available Riders + Total Rider Count + On Duty + In Transit + Available Job Order Count Jobs For Assignment Inventory @@ -764,7 +767,7 @@ - + No items to display. @@ -777,6 +780,9 @@ {{ hub.duration ? hub.duration : '-' }} --> {{ hub.rider_count }} + {{ hub.rider_logged_in|default('0') }} + {{ hub.rider_in_transit|default('0') }} + {{ hub.rider_available|default('0') }} {{ hub.redis_jo_count }} {{ hub.jo_count }} {{ hub.inventory|default('0') }}