From e33b9eb71935aae55c71dc1da1d9d4369e991cf9 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 21 Jul 2021 04:13:04 +0000 Subject: [PATCH] Move customer tag removal to service. #591 --- src/Controller/ResqAPI/JobOrderController.php | 53 ++++++------------- .../JobOrderHandler/ResqJobOrderHandler.php | 24 ++------- src/Service/JobOrderManager.php | 23 ++++++++ 3 files changed, 41 insertions(+), 59 deletions(-) diff --git a/src/Controller/ResqAPI/JobOrderController.php b/src/Controller/ResqAPI/JobOrderController.php index 6f2805c6..355274fa 100644 --- a/src/Controller/ResqAPI/JobOrderController.php +++ b/src/Controller/ResqAPI/JobOrderController.php @@ -66,7 +66,7 @@ class JobOrderController extends APIController public function requestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo, InventoryManager $im, MQTTClient $mclient, RiderAssignmentHandlerInterface $rah, - PromoLogger $promo_logger, EntityManagerInterface $em, HubSelector $hub_select, + EntityManagerInterface $em, HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, HubFilteringGeoChecker $hub_geofence, MobileAPIHandler $mah, JobOrderManager $jo_manager) { @@ -154,15 +154,20 @@ class JobOrderController extends APIController 'invoice' => $invoice_data ]; - $this->removeCustomerTag($jo, $jo->getCustomerVehicle(), $promo_logger, $mobile_user->getID()); + // check service type + if ($jo->getServiceType() == ServiceType::BATTERY_REPLACEMENT_NEW) + { + $customer_tags = $cust->getCustomerTagObjects(); + $jo_manager->removeCustomerTag($jo, $customer_tags, $mobile_user->getID()); + } return new APIResponse(true, 'Job order created', $data); } public function newRequestJobOrder(Request $req, InvoiceGeneratorInterface $ic, GeofenceTracker $geo, InventoryManager $im, MQTTClient $mclient, - RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger, - HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, + RiderAssignmentHandlerInterface $rah, HubSelector $hub_select, + HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em, MobileAPIHandler $mah, JobOrderManager $jo_manager) { @@ -281,7 +286,12 @@ class JobOrderController extends APIController 'invoice' => $invoice_data ]; - $this->removeCustomerTag($jo, $jo->getCustomerVehicle(), $promo_logger, $mobile_user->getID()); + // check service type + if ($jo->getServiceType() == ServiceType::BATTERY_REPLACEMENT_NEW) + { + $customer_tags = $cust->getCustomerTagObjects(); + $jo_manager->removeCustomerTag($jo, $customer_tags, $mobile_user->getID()); + } return new APIResponse(true, 'Job order created', $data); } @@ -1167,39 +1177,6 @@ class JobOrderController extends APIController return $invoice_data; } - protected function removeCustomerTag(JobOrder $jo, CustomerVehicle $cv, PromoLogger $promo_logger, $mobile_user_id) - { - // 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) - { - if ($customer_tag->getID() == $invoice->getUsedCustomerTagId()) - { - // remove associated entity - $customer->removeCustomerTag($customer_tag); - - // log the availment of promo from customer - $created_by = $mobile_user_id; - $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); - } - } - } - } - } - protected function generateJobOrderData($req, $jo, $rt, $mah) { $status = $jo->getStatus(); diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index fcc3b6b0..f425241c 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -403,30 +403,12 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // check service type if ($jo->getServiceType() == ServiceType::BATTERY_REPLACEMENT_NEW) { - $customer = $cust_vehicle->getCustomer(); + // process customer tags $customer_tags = $customer->getCustomerTagObjects(); if (!empty($customer_tags)) { - foreach ($customer_tags as $customer_tag) - { - if ($customer_tag->getID() == $jo->getInvoice()->getUsedCustomerTagId()) - { - // remove associated entity - $customer->removeCustomerTag($customer_tag); - - // log the availment of promo from customer - $created_by = $jo->getCreatedBy()->getUsername(); - $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); - } - } + $username = $jo->getCreatedBy()->getUsername(); + $this->jo_manager->removeCustomerTag($jo, $customer_tags, $username); } } } diff --git a/src/Service/JobOrderManager.php b/src/Service/JobOrderManager.php index 6d35fc74..27b32b6c 100644 --- a/src/Service/JobOrderManager.php +++ b/src/Service/JobOrderManager.php @@ -136,4 +136,27 @@ class JobOrderManager } } + public function removeCustomerTag(JobOrder $jo, $customer_tags, $username) + { + foreach ($customer_tags as $customer_tag) + { + if ($customer_tag->getID() == $jo->getInvoice()->getUsedCustomerTagId()) + { + // remove associated entity + $customer->removeCustomerTag($customer_tag); + + // log the availment of promo from customer + $created_by = $username; + $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); + } + } + } }