diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 5f88b057..5fc399b6 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -2553,6 +2553,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $this->fillDropdownParameters($params); $this->fillFormTags($params); + // get the rider data to display for table + $rider_data = $this->getRiderDataForAssignment($obj); + $params['rider_data'] = $rider_data; + // get template to display $params['template'] = $this->getTwigTemplate('jo_assigning_form'); $params['obj'] = $obj; @@ -2818,6 +2822,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $this->fillDropdownParameters($params); $this->fillFormTags($params); + // get the rider data to display for table + $rider_data = $this->getRiderDataForAssignment($obj); + $params['rider_data'] = $rider_data; + $params['obj'] = $obj; $params['status_cancelled'] = JOStatus::CANCELLED; // get template to display @@ -3495,6 +3503,48 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ]; } + protected function getRiderDataForAssignment($obj) + { + $hub = $obj->getHub(); + + $rider_data = []; + + // get all active riders of hub + $active_riders = $hub->getActiveRiders(); + + // need to get first name, last name, contact number, plate number, status, image file + // status: Online (rider is logged in app), Offline (rider is not logged in app), In transit + + foreach ($active_riders as $rider) + { + // in transit - flag_available = 0 AND current_job_order is not null + // online - flag_available = 1 + // offline - flag_available = 0 AND current_job_order is null + $rider_status = ''; + + if ($rider->isAvailable() == true) + $rider_status = 'Online'; + + if (($rider->isAvailable() == false) && + ($rider->getCurrentJobOrder() == null)) + $rider_status = 'Offline'; + + if (($rider->isAvailable() == false) && + ($rider->getCurrentJobOrder() != null)) + $rider_status = 'In transit'; + + $rider_data[$rider->getID()] = [ + 'first_name' => $rider->getFirstName(), + 'last_name' => $rider->getLastName(), + 'contact_number' => $rider->getContactNumber(), + 'plate_number' => $rider->getPlateNumber(), + 'image_file' => $rider->getImageFile(), + 'status' => $rider_status, + ]; + } + return $rider_data; + } + // TODO: re-enable search, figure out how to group the orWhere filters into one, so can execute that plus the pending filter // check if datatable filter is present and append to query protected function setQueryFilters($datatable, &$query, $qb, $hubs, $tier, $status) diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index e57f8114..f6e43811 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -882,48 +882,64 @@
-
- - -
- - - - - - - - - - - - - {% set avail_riders = obj.getHub.getAvailableRiders|default([]) %} - - - +
+ + +
+
First NameLast NameContact No.Plate NumberStatus
- No riders available. -
+ + + + + + + + + + + + + {% if obj.getHub %} + {% for key, data in rider_data %} + + + + + + + + + {% endfor %} + {% endif %} + +
First NameLast NameContact No.Plate NumberStatus
+
+
{{ data['first_name'] }} {{ data['last_name'] }} {{ data['contact_number'] }} {{ data['plate_number'] }} {{ data['status'] }}
+
+
+
{% endif %}