Add rider status to rider assignment table. #735 #1660
2 changed files with 108 additions and 41 deletions
|
|
@ -2553,6 +2553,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->fillDropdownParameters($params);
|
$this->fillDropdownParameters($params);
|
||||||
$this->fillFormTags($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
|
// get template to display
|
||||||
$params['template'] = $this->getTwigTemplate('jo_assigning_form');
|
$params['template'] = $this->getTwigTemplate('jo_assigning_form');
|
||||||
$params['obj'] = $obj;
|
$params['obj'] = $obj;
|
||||||
|
|
@ -2818,6 +2822,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->fillDropdownParameters($params);
|
$this->fillDropdownParameters($params);
|
||||||
$this->fillFormTags($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['obj'] = $obj;
|
||||||
$params['status_cancelled'] = JOStatus::CANCELLED;
|
$params['status_cancelled'] = JOStatus::CANCELLED;
|
||||||
// get template to display
|
// get template to display
|
||||||
|
|
@ -3495,6 +3503,49 @@ 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())
|
||||||
|
{
|
||||||
|
$rider_status = 'Online';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($rider->getCurrentJobOrder() == null)
|
||||||
|
$rider_status = 'Offline';
|
||||||
|
else
|
||||||
|
$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
|
// 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
|
// check if datatable filter is present and append to query
|
||||||
protected function setQueryFilters($datatable, &$query, $qb, $hubs, $tier, $status)
|
protected function setQueryFilters($datatable, &$query, $qb, $hubs, $tier, $status)
|
||||||
|
|
|
||||||
|
|
@ -882,48 +882,64 @@
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group m-form__group row">
|
<div class="form-group m-form__group row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<label>Click on a row to select a rider</label>
|
<label>Click on a row to select a rider</label>
|
||||||
<div class="form-control-feedback hide" data-field="rider"></div>
|
<div class="form-control-feedback hide" data-field="rider"></div>
|
||||||
<div class="table-frame" data-name="rider">
|
<div class="table-frame" data-name="rider">
|
||||||
<table id="riders-table" class="table table-compact table-hover table-clickable table-vcenter m-table">
|
<table id="riders-table" class="table table-compact table-hover table-clickable table-vcenter m-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>First Name</th>
|
<th>First Name</th>
|
||||||
<th>Last Name</th>
|
<th>Last Name</th>
|
||||||
<th>Contact No.</th>
|
<th>Contact No.</th>
|
||||||
<th>Plate Number</th>
|
<th>Plate Number</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% set avail_riders = obj.getHub.getAvailableRiders|default([]) %}
|
<!--
|
||||||
<tr class="placeholder-row{{ obj.getHub and avail_riders|length > 0 ? ' hide' }}">
|
{% set avail_riders = obj.getHub.getAvailableRiders|default([]) %}
|
||||||
<td colspan="6">
|
<tr class="placeholder-row{{ obj.getHub and avail_riders|length > 0 ? ' hide' }}">
|
||||||
No riders available.
|
<td colspan="6">
|
||||||
</td>
|
No riders available.
|
||||||
</tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
{% if obj.getHub %}
|
{% if obj.getHub %}
|
||||||
{% for rider in avail_riders %}
|
{% for rider in avail_riders %}
|
||||||
<tr data-id="{{ rider.getID }}"{{ obj.getRider and obj.getRider.getID == rider.getID ? ' class="m-table__row--primary"' }}>
|
<tr data-id="{{ rider.getID }}"{{ obj.getRider and obj.getRider.getID == rider.getID ? ' class="m-table__row--primary"' }}>
|
||||||
<td>
|
<td>
|
||||||
<div class="user-portrait-sm" style="background-image: url('{{ rider.getImageFile ? "/uploads/" ~ rider.getImageFile : "/assets/images/user.gif" }}');"></div>
|
<div class="user-portrait-sm" style="background-image: url('{{ rider.getImageFile ? "/uploads/" ~ rider.getImageFile : "/assets/images/user.gif" }}');"></div>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ rider.getFirstName }}</td>
|
<td>{{ rider.getFirstName }}</td>
|
||||||
<td>{{ rider.getLastName }}</td>
|
<td>{{ rider.getLastName }}</td>
|
||||||
<td>{{ rider.getContactNumber }}</td>
|
<td>{{ rider.getContactNumber }}</td>
|
||||||
<td>{{ rider.getPlateNumber }}</td>
|
<td>{{ rider.getPlateNumber }}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</tbody>
|
-->
|
||||||
</table>
|
{% if obj.getHub %}
|
||||||
</div>
|
{% for key, data in rider_data %}
|
||||||
</div>
|
<tr data-id="{{ key }}" {{ obj.getRider and obj.getRider.getID == key ? ' class="m-table__row--primary"' }}>
|
||||||
</div>
|
<td>
|
||||||
|
<div class="user-portrait-sm" style="background-image: url('{{ data['image_file'] ? "/uploads/" ~ data['image_file'] : "/assets/images/user.gif" }}');"></div>
|
||||||
|
</td>
|
||||||
|
<td> {{ data['first_name'] }} </td>
|
||||||
|
<td> {{ data['last_name'] }} </td>
|
||||||
|
<td> {{ data['contact_number'] }} </td>
|
||||||
|
<td> {{ data['plate_number'] }} </td>
|
||||||
|
<td> {{ data['status'] }} </td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue