Add filter for rider availability. #554

This commit is contained in:
Korina Cordero 2021-04-28 03:45:33 +00:00
parent 140ea8c738
commit 4337864c2c

View file

@ -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))