Add filter for rider availability. #554
This commit is contained in:
parent
140ea8c738
commit
4337864c2c
1 changed files with 35 additions and 0 deletions
|
|
@ -73,6 +73,8 @@ class HubSelector
|
|||
$filtered_hubs = $hubs_payment_method;
|
||||
|
||||
// filter hubs by rider availability
|
||||
$hubs_rider_availability = $this->filterHubsByRiderAvailability($filtered_hubs);
|
||||
$filtered_hubs = $hubs_rider_availability;
|
||||
|
||||
// inventory filter
|
||||
$hubs_inventory = $this->filterHubsByInventory($filtered_hubs, $flag_inventory_check,
|
||||
|
|
@ -201,6 +203,39 @@ class HubSelector
|
|||
return $results;
|
||||
}
|
||||
|
||||
protected function filterHubsByRiderAvailability($hubs)
|
||||
{
|
||||
if (empty($hubs))
|
||||
return $hubs;
|
||||
|
||||
$results = [];
|
||||
foreach ($hubs as $hub_data)
|
||||
{
|
||||
$hub = $hub_data['hub'];
|
||||
|
||||
// get hub's riders
|
||||
$riders = $hub->getRiders();
|
||||
$avail_rider_count = 0;
|
||||
foreach ($riders as $rider)
|
||||
{
|
||||
if ($rider->isAvailable())
|
||||
$avail_rider_count = $avail_rider_count +1;
|
||||
}
|
||||
|
||||
if ($avail_rider_count > 0)
|
||||
$results[] = [
|
||||
'hub' => $hub,
|
||||
'db_distance' => $hub_data['db_distance'],
|
||||
'distance' => $hub_data['distance'],
|
||||
'duration' => $hub_data['duration'],
|
||||
];
|
||||
else
|
||||
$this->hub_filter_logger->logFilteredHub($hub, 'no_available_rider');
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
protected function filterHubsByDateAndTime($hubs, $date_time)
|
||||
{
|
||||
if (empty($hubs))
|
||||
|
|
|
|||
Loading…
Reference in a new issue