Add payment method filter. #554

This commit is contained in:
Korina Cordero 2021-04-27 08:25:08 +00:00
parent 0717df5fff
commit 63b989034d
4 changed files with 105 additions and 15 deletions

View file

@ -1026,6 +1026,10 @@ class APIController extends Controller implements LoggedController
if (!empty($sku))
$hub_criteria->addItem($batt->getSAPCode(), 1);
// add payment method to criteria
if (!empty($jo->getModeOfPayment()))
$hub_criteria->setPaymentMethod($jo->getModeOfPayment());
// find nearest hubs
$nearest_hubs = $hub_select->find($hub_criteria);
@ -2552,6 +2556,10 @@ class APIController extends Controller implements LoggedController
if (!empty($sku))
$hub_criteria->addItem($batt->getSAPCode(), 1);
// add payment method to criteria
if (!empty($jo->getModeOfPayment()))
$hub_criteria->setPaymentMethod($jo->getModeOfPayment());
// find nearest hubs
$nearest_hubs = $hub_select->find($hub_criteria);

View file

@ -15,6 +15,7 @@ class HubCriteria
protected $jo_type; // jo service needed
protected $date_time; // date and time to check if hub is open or not
protected $items; // array of items: items[sku] = quantity to check for
protected $payment_method; // payment method of JO
public function __construct()
{
@ -23,8 +24,9 @@ class HubCriteria
$this->limit_distance = 500;
$this->jo_type = '';
$this->date_time = null;
$this->flag_inventory_check = true;
$this->flag_inventory_check = false;
$this->items = [];
$this->payment_method = '';
}
public function setPoint(Point $point)
@ -105,4 +107,21 @@ class HubCriteria
{
return $this->items;
}
public function setItems($items)
{
$this->items = $items;
return $this;
}
public function setPaymentMethod($payment_method)
{
$this->payment_method = $payment_method;
return $this;
}
public function getPaymentMethod()
{
return $this->payment_method;
}
}

View file

@ -48,6 +48,7 @@ class HubSelector
$flag_inventory_check = $criteria->hasInventoryCheck();
$items = $criteria->getItems();
$date_time = $criteria->getDateTime();
$payment_method = $criteria->getPaymentMethod();
$results = [];
@ -64,6 +65,12 @@ class HubSelector
$hubs_jo_type = $this->filterHubsByJoType($filtered_hubs, $jo_type);
$filtered_hubs = $hubs_jo_type;
// filter hubs by payment methods
$hubs_payment_method = $this->filterHubsByPaymentMethod($filtered_hubs, $payment_method);
$filtered_hubs = $hubs_payment_method;
// filter hubs by rider availability
// inventory filter
$hubs_inventory = $this->filterHubsByInventory($filtered_hubs, $flag_inventory_check,
$jo_type, $items);
@ -149,6 +156,47 @@ class HubSelector
return $results;
}
protected function filterHubsByPaymentMethod($hubs, $payment_method)
{
if (empty($hubs))
return $hubs;
if (empty($payment_method))
return $hubs;
$results = [];
foreach ($hubs as $hub_data)
{
$hub = $hub_data['hub'];
// name of payment method is what is saved
$payment_methods = $hub->getPaymentMethods();
if ($payment_methods != null)
{
$flag_found_pmethod = false;
foreach ($payment_methods as $pmethod)
{
if ($pmethod == $payment_method)
{
$results[] = [
'hub' => $hub,
'db_distance' => $hub_data['db_distance'],
'distance' => $hub_data['distance'],
'duration' => $hub_data['duration'],
];
}
$flag_found_pmethod = true;
}
if (!$flag_found_pmethod)
$this->hub_filter_logger->logFilteredHub($hub, 'no_payment_method');
}
else
$this->hub_filter_logger->logFilteredHub($hub, 'no_payment_method');
}
return $results;
}
protected function filterHubsByDateAndTime($hubs, $date_time)
{
if (empty($hubs))

View file

@ -1898,11 +1898,39 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get rejection reasons
$params['rejection_reasons'] = JORejectionReason::getCollection();
// set hub criteria
$hub_criteria = new HubCriteria();
// get battery (if any)
$skus = [];
$items = [];
$invoice = $obj->getInvoice();
$inv_items = $invoice->getItems();
foreach ($inv_items as $inv_item)
{
$batt = $inv_item->getBattery();
if ($batt == null)
continue;
$skus[] = $batt->getSapCode();
$item_count = 1;
if (!empty($batt->getSapCode()))
{
$sap_code = $batt->getSapCode();
if (isset($items[$sap_code]))
$items[$sap_code] = $item_count + 1;
else
$items[$sap_code] = $item_count;
}
}
// get closest hubs
// set hub criteria
$hub_criteria = new HubCriteria();
$hub_criteria->setPoint($obj->getCoordinates())
->setLimitResults(50);
->setLimitResults(50)
->setPaymentMethod($obj->getModeOfPayment())
->setJoType($obj->getServiceType());
$hubs = $hub_selector->find($hub_criteria);
//$hubs = $map_tools->getClosestHubs($obj->getCoordinates(), 50, date("H:i:s"));
@ -1971,19 +1999,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
// get template to display
$params['template'] = $this->getTwigTemplate('jo_processing_form');
// get battery (if any)
$skus = [];
$invoice = $obj->getInvoice();
$inv_items = $invoice->getItems();
foreach ($inv_items as $inv_item)
{
$batt = $inv_item->getBattery();
if ($batt == null)
continue;
$skus[] = $batt->getSapCode();
}
// get inventory
$mres = $motiv->getInventory($branch_codes, $skus);
foreach ($mres as $mres_item)