Add logging when one time discount has been availed for mobile. Add removal of promo from customer when one time discount has been availed for mobile. #558

This commit is contained in:
Korina Cordero 2021-05-07 07:48:22 +00:00
parent df05316612
commit 03360a2ae9
2 changed files with 69 additions and 3 deletions

View file

@ -44,6 +44,7 @@ use App\Service\HubSelector;
use App\Service\HubDistributor;
use App\Service\HubFilterLogger;
use App\Service\WarrantyAPILogger;
use App\Service\PromoLogger;
use App\Entity\MobileSession;
use App\Entity\Customer;
@ -852,7 +853,8 @@ class APIController extends Controller implements LoggedController
public function requestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo,
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
RiderAssignmentHandlerInterface $rah, HubSelector $hub_select,
HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger)
HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
PromoLogger $promo_logger)
{
// check required parameters and api key
$required_params = [
@ -1160,6 +1162,37 @@ class APIController extends Controller implements LoggedController
'invoice' => $invoice_data
];
// check service type
if ($jo->getServiceType() == ServiceType::BATTERY_REPLACEMENT_NEW)
{
$customer = $cv->getCustomer();
$customer_tags = $customer->getCustomerTagObjects();
if (!empty($customer_tags))
{
foreach ($customer_tags as $customer_tag)
{
// TODO: not too comfy with this being hardcoded
if ($customer_tag->getID() == 'CAR_CLUB_PROMO')
{
// remove associated entity
$customer->removeCustomerTag($customer_tag);
// log the availment of promo from customer
$created_by = $req->query->get('api_key');;
$cust_id = $jo->getCustomer()->getID();
$cust_fname = $jo->getCustomer()->getFirstName();
$cust_lname = $jo->getCustomer()->getLastName();
$jo_id = $jo->getID();
$invoice_id = $jo->getInvoice()->getID();
// TODO: check if we store total price of invoice or just the discounted amount
$amount = $jo->getInvoice()->getTotalPrice();
$this->promo_logger->logPromoInfo($created_by, $cust_id, $cust_fname, $cust_lname, $jo_id,
$invoice_id, $amount);
}
}
}
}
// set data
$res->setData($data);
@ -2371,7 +2404,8 @@ class APIController extends Controller implements LoggedController
public function newRequestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo,
MapTools $map_tools, InventoryManager $im, MQTTClient $mclient,
RiderAssignmentHandlerInterface $rah, HubSelector $hub_select,
HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger)
HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger,
PromoLogger $promo_logger)
{
// check required parameters and api key
$required_params = [
@ -2740,6 +2774,38 @@ class APIController extends Controller implements LoggedController
'invoice' => $invoice_data
];
// need to check for customer tag/promo
// check service type
if ($jo->getServiceType() == ServiceType::BATTERY_REPLACEMENT_NEW)
{
$customer = $cv->getCustomer();
$customer_tags = $customer->getCustomerTagObjects();
if (!empty($customer_tags))
{
foreach ($customer_tags as $customer_tag)
{
// TODO: not too comfy with this being hardcoded
if ($customer_tag->getID() == 'CAR_CLUB_PROMO')
{
// remove associated entity
$customer->removeCustomerTag($customer_tag);
// log the availment of promo from customer
$created_by = $req->query->get('api_key');;
$cust_id = $jo->getCustomer()->getID();
$cust_fname = $jo->getCustomer()->getFirstName();
$cust_lname = $jo->getCustomer()->getLastName();
$jo_id = $jo->getID();
$invoice_id = $jo->getInvoice()->getID();
// TODO: check if we store total price of invoice or just the discounted amount
$amount = $jo->getInvoice()->getTotalPrice();
$promo_logger->logPromoInfo($created_by, $cust_id, $cust_fname, $cust_lname, $jo_id,
$invoice_id, $amount);
}
}
}
}
// set data
$res->setData($data);

View file

@ -304,7 +304,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
{
// new job order
$jo = new JobOrder();
$flag_new_jo = true;
$flag_new_jo = true;
}
// find customer