Add sending of SMS to hub if hub gets filtered out for no stock. #553

This commit is contained in:
Korina Cordero 2021-04-26 07:48:51 +00:00
parent 3a5d57e35c
commit 3c9070673f
3 changed files with 56 additions and 2 deletions

View file

@ -23,7 +23,7 @@ class HubCriteria
$this->limit_distance = 500;
$this->jo_type = '';
$this->date_time = null;
$this->has_inventory = false;
$this->flag_inventory_check = true;
$this->items = [];
}

View file

@ -4,6 +4,8 @@ namespace App\Service;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use CrEOF\Spatial\PHP\Types\Geometry\Point;
use App\Entity\Hub;
@ -11,6 +13,7 @@ use App\Entity\Hub;
use App\Service\HubDistributor;
use App\Service\InventoryManager;
use App\Service\HubFilterLogger;
use App\Service\RisingTideGateway;
use App\Ramcar\HubCriteria;
use App\Ramcar\ServiceType;
@ -21,14 +24,19 @@ class HubSelector
protected $im;
protected $hub_distributor;
protected $hub_filter_logger;
protected $trans;
protected $rt;
public function __construct(EntityManagerInterface $em, InventoryManager $im,
HubDistributor $hub_distributor, HubFilterLogger $hub_filter_logger)
HubDistributor $hub_distributor, HubFilterLogger $hub_filter_logger,
TranslatorInterface $trans, RisingTideGateway $rt)
{
$this->em = $em;
$this->im = $im;
$this->hub_distributor = $hub_distributor;
$this->hub_filter_logger = $hub_filter_logger;
$this->trans = $trans;
$this->rt = $rt;
}
public function find(HubCriteria $criteria)
@ -209,7 +217,19 @@ class HubSelector
'duration' => $hub_data['duration'],
];
else
{
// get the skus for the message
$sku_text = '';
foreach ($items as $key => $value)
{
$sku_text .= ' ' . $key;
}
// send SMS to hub
$message = str_replace('item_display', trim($sku_text), $this->trans->trans('no_inventory_message'));
error_log($message);
$this->sendSMSMessage($hub, $items);
$this->hub_filter_logger->logFilteredHub($hub, 'inventory');
}
}
if ($jo_type == ServiceType::BATTERY_REPLACEMENT_WARRANTY)
{
@ -223,7 +243,19 @@ class HubSelector
'duration' => $hub_data['duration'],
];
else
{
// get the skus for the message
$sku_text = '';
foreach ($items as $key => $value)
{
$sku_text .= ' ' . $key;
}
// send SMS to hub
$message = str_replace('item_display', trim($sku_text), $this->trans->trans('no_inventory_message'));
error_log($message);
$this->sendSMSMessage($hub, $items);
$this->hub_filter_logger->logFilteredHub($hub, 'inventory');
}
}
}
}
@ -231,6 +263,27 @@ class HubSelector
return $results;
}
protected function sendSMSMessage($hub, $items)
{
// compose message
// get the skus for the message
$sku_text = '';
foreach ($items as $key => $value)
{
$sku_text .= ' ' . $key;
}
$message = str_replace('item_display', trim($sku_text), $this->trans->trans('no_inventory_message'));
error_log($message);
// get hub notification number
$mobile_number = $hub->getNotifNumber();
// TODO: what if hub has no notif number?
// send SMS message
error_log('sending sms to - ' . $mobile_number);
$this->rt->sendSMS($mobile_number, 'MOTOLITE', $message);
}
protected function getClosestHubs(Point $point, $limit_distance)
{
// get closest hubs based on st_distance function from db

View file

@ -13,6 +13,7 @@ add_cust_vehicle_battery_info: This vehicle is using a Motolite battery
jo_title_pdf: Motolite Res-Q Job Order
country_code_prefix: '+63'
delivery_instructions_label: Delivery Instructions
no_inventory_message: No stock for [item_display]
# images
image_logo_login: /assets/images/logo-resq.png