From 35456cfb19108c861a0fc0820416139fb49302a6 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 9 Nov 2023 12:07:26 +0800 Subject: [PATCH 1/6] Add new field for job order for new customers. Add saving of new field for job orders from admin panel and third party API. #773 --- src/Controller/TAPI/JobOrderController.php | 17 +++++++++++++++-- src/Entity/JobOrder.php | 19 +++++++++++++++++++ .../JobOrderHandler/ResqJobOrderHandler.php | 12 ++++++++++-- templates/job-order/list.all.html.twig | 15 +++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/Controller/TAPI/JobOrderController.php b/src/Controller/TAPI/JobOrderController.php index 83fb0a17..d173e314 100644 --- a/src/Controller/TAPI/JobOrderController.php +++ b/src/Controller/TAPI/JobOrderController.php @@ -136,7 +136,8 @@ class JobOrderController extends ApiController ->setModeOfPayment($data['payment_mode']) ->setAdvanceOrder($data['is_advance_order']) ->setStatusAutoAssign(AutoAssignStatus::NOT_ASSIGNED) - ->setLandmark($data['landmark']); + ->setLandmark($data['landmark']) + ->setCustNew($data['flag_new_cust']); $jo->setCustomer($data['customer']); $jo->setCustomerVehicle($data['customer_vehicle']); @@ -1388,6 +1389,7 @@ class JobOrderController extends ApiController 'customer_vehicle' => $cust_data['customer_vehicle'], 'source' => TransactionOrigin::THIRD_PARTY, 'warranty_class' => $warranty_class, + 'flag_new_cust' => $cust_data['flag_new_cust'], ]; return null; @@ -1561,6 +1563,7 @@ class JobOrderController extends ApiController // find customer + customer vehicle combo $cust_vehicle = $this->findCustomerAndCustomerVehicle($data, $em); + $flag_new_cust = false; if ($cust_vehicle == null) { // find customer given phone number @@ -1596,7 +1599,8 @@ class JobOrderController extends ApiController // add customer vehicle $cust_vehicle = $this->createCustomerVehicle($em, $cust, $data); - + + $flag_new_cust = true; } else { @@ -1607,9 +1611,18 @@ class JobOrderController extends ApiController $em->flush(); } + // check if customer already has existing job orders + if ($cust != null) + { + $cust_jos = $cust->getJobOrders(); + if (count($cust_jos) <= 1) + $flag_new_cust = true; + } + $c_data = [ 'customer' => $cust_vehicle->getCustomer(), 'customer_vehicle' => $cust_vehicle, + 'flag_new_cust' => $flag_new_cust, ]; return $c_data; diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index c71f1846..885bc295 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -435,6 +435,12 @@ class JobOrder */ protected $inventory_count; + // flag to indicate if customer is new aka has one or less job order in system + /** + * @ORM\Column(type="boolean") + */ + protected $flag_cust_new; + public function __construct() { $this->date_create = new DateTime(); @@ -461,6 +467,8 @@ class JobOrder $this->will_wait = WillingToWaitContent::WILLING_TO_WAIT; $this->inventory_count = 0; + + $this->flag_cust_new = false; } public function getID() @@ -1237,4 +1245,15 @@ class JobOrder return $this->inventory_count; } + public function setCustNew($flag_cust_new = true) + { + $this->flag_cust_new = $flag_cust_new; + return $this; + } + + public function isCustNew() + { + return $this->flag_cust_new; + } + } diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index f03d8b0f..8ccde62c 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -214,7 +214,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ($reason == CustomerNotWaitReason::RUSH_REQUEST)) $is_emergency = true; } - + // add row data $row['id'] = $orow->getID(); $row['customer_name'] = $orow->getCustomer()->getFirstName() . ' ' . $orow->getCustomer()->getLastName(); @@ -228,6 +228,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $row['is_mobile'] = $orow->getSource() == TransactionOrigin::MOBILE_APP; $row['is_vip'] = $is_vip; $row['is_emergency'] = $is_emergency; + $row['flag_cust_new'] = $orow->isCustNew(); $processor = $orow->getProcessedBy(); if ($processor == null) @@ -359,6 +360,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // find customer $cust_id = $req->request->get('cid'); $customer = $em->getRepository(Customer::class)->find($cust_id); + $flag_new_cust = false; if (empty($customer)) { $error_array['customer_vehicle'] = 'Invalid customer specified.'; @@ -386,6 +388,11 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setResearchSms($req->request->get('flag_research_sms', false)) ->setResearchEmail($req->request->get('flag_research_email', false)) ->setDpaConsent($is_dpa_checked); + + // check if customer has more than one job order already + $cust_jos = $customer->getJobOrders(); + if (count($cust_jos) <= 1) + $flag_new_cust = true; } // check if lat and lng are provided @@ -519,7 +526,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setGender($gender) ->setEmergencyType($etype) ->setOwnershipType($owner_type) - ->setCustomerLocation($cust_location); + ->setCustomerLocation($cust_location) + ->setCustNew($flag_new_cust); // check if user is null, meaning call to create came from API if ($user != null) diff --git a/templates/job-order/list.all.html.twig b/templates/job-order/list.all.html.twig index 19332331..ede5c70d 100644 --- a/templates/job-order/list.all.html.twig +++ b/templates/job-order/list.all.html.twig @@ -108,6 +108,21 @@ field: 'plate_number', title: 'Plate #' }, + { + field: 'flag_cust_new', + title: 'New', + template: function (row, index, datatable) { + var tag = ''; + + if (row.flag_cust_new === true) { + tag = 'Yes'; + } else { + tag = 'No'; + } + + return tag; + } + }, { field: 'customer_name', title: 'Customer' From 806418db52f71d8181490294ea53b26558fc86c3 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 9 Nov 2023 16:30:57 +0800 Subject: [PATCH 2/6] Fix checking for customer job orders. #773 --- src/Controller/APIController.php | 22 ++++++++++++++-- .../CustomerAppAPI/JobOrderController.php | 25 +++++++++++++++++-- src/Controller/TAPI/JobOrderController.php | 19 +++++++------- .../JobOrderHandler/ResqJobOrderHandler.php | 15 ++++++----- src/Service/JobOrderManager.php | 21 ++++++++++++++++ 5 files changed, 83 insertions(+), 19 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 64662057..821fa490 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -49,6 +49,7 @@ use App\Service\HubDistributor; use App\Service\HubFilterLogger; use App\Service\HubFilteringGeoChecker; use App\Service\HashGenerator; +use App\Service\JobOrderManager; use App\Entity\MobileSession; use App\Entity\Customer; @@ -867,7 +868,7 @@ class APIController extends Controller implements LoggedController MapTools $map_tools, InventoryManager $im, MQTTClient $mclient, RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger, HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, - HubFilteringGeoChecker $hub_geofence) + HubFilteringGeoChecker $hub_geofence, JobOrderManager $jo_manager) { // check required parameters and api key $required_params = [ @@ -928,7 +929,15 @@ class APIController extends Controller implements LoggedController ->setErrorMessage('No customer information found'); return $res->getReturnResponse(); } + + // check if customer has more than one job order already + $flag_new_cust = false; + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + if ($cust_jo_count <= 1) + $flag_new_cust = true; + $jo->setCustomer($cust); + $jo->setCustNew($flag_new_cust); // validate service type $stype = $req->request->get('service_type'); @@ -2732,7 +2741,7 @@ class APIController extends Controller implements LoggedController MapTools $map_tools, InventoryManager $im, MQTTClient $mclient, RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger, HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, - HubFilteringGeoChecker $hub_geofence) + HubFilteringGeoChecker $hub_geofence, JobOrderManager $jo_manager) { // check required parameters and api key $required_params = [ @@ -2857,7 +2866,16 @@ class APIController extends Controller implements LoggedController // ->setErrorMessage('No customer information found'); // return $res->getReturnResponse(); // } + + // check if customer has more than one job order already + $flag_new_cust = false; + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + error_log('cust jo count for customer id ' .$cust->getID() . ' ' . $cust_jo_count); + if ($cust_jo_count <= 1) + $flag_new_cust = true; + $jo->setCustomer($cust); + $jo->setCustNew($flag_new_cust); // validate service type $stype = $req->request->get('service_type'); diff --git a/src/Controller/CustomerAppAPI/JobOrderController.php b/src/Controller/CustomerAppAPI/JobOrderController.php index 07356ce2..3bffbfc6 100644 --- a/src/Controller/CustomerAppAPI/JobOrderController.php +++ b/src/Controller/CustomerAppAPI/JobOrderController.php @@ -20,6 +20,7 @@ use App\Service\HubSelector; use App\Service\HubDistributor; use App\Service\HubFilterLogger; use App\Service\HubFilteringGeoChecker; +use App\Service\JobOrderManager; use App\Ramcar\ServiceType; use App\Ramcar\APIRiderStatus; use App\Ramcar\InvoiceCriteria; @@ -482,7 +483,8 @@ class JobOrderController extends ApiController HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, - HubFilteringGeoChecker $hub_geofence + HubFilteringGeoChecker $hub_geofence, + JobOrderManager $jo_manager ) { // validate params $validity = $this->validateRequest($req, [ @@ -594,7 +596,16 @@ class JobOrderController extends ApiController // ->setErrorMessage('No customer information found'); // return $res->getReturnResponse(); // } + + // check if customer has more than one job order already + $flag_new_cust = false; + + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + if ($cust_jo_count <= 1) + $flag_new_cust = true; + $jo->setCustomer($cust); + $jo->setCustNew($flag_new_cust); // validate service type $stype = $req->request->get('service_type'); @@ -956,7 +967,8 @@ class JobOrderController extends ApiController HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, - HubFilteringGeoChecker $hub_geofence + HubFilteringGeoChecker $hub_geofence, + JobOrderManager $jo_manager ) { // validate params $validity = $this->validateRequest($req, [ @@ -1011,7 +1023,16 @@ class JobOrderController extends ApiController if ($cust == null) { return new ApiResponse(false, 'No customer information found.'); } + + // check if customer has more than one job order already + $flag_new_cust = false; + + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + if ($cust_jo_count <= 1) + $flag_new_cust = true; + $jo->setCustomer($cust); + $jo->setCustNew($flag_new_cust); // validate service type $stype = $req->request->get('service_type'); diff --git a/src/Controller/TAPI/JobOrderController.php b/src/Controller/TAPI/JobOrderController.php index d173e314..023543be 100644 --- a/src/Controller/TAPI/JobOrderController.php +++ b/src/Controller/TAPI/JobOrderController.php @@ -45,6 +45,7 @@ use App\Service\HubFilteringGeoChecker; use App\Service\RiderTracker; use App\Service\PromoLogger; use App\Service\MapTools; +use App\Service\JobOrderManager; use App\Entity\JobOrder; use App\Entity\CustomerVehicle; @@ -78,7 +79,7 @@ class JobOrderController extends ApiController FCMSender $fcmclient, RiderAssignmentHandlerInterface $rah, PromoLogger $promo_logger, HubSelector $hub_select, HubDistributor $hub_dist, HubFilterLogger $hub_filter_logger, - HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em) + HubFilteringGeoChecker $hub_geofence, EntityManagerInterface $em, JobOrderManager $jo_manager) { $this->denyAccessUnlessGranted('tapi_jo.request', null, 'No access.'); @@ -107,7 +108,7 @@ class JobOrderController extends ApiController // get data from request $data = []; - $status = $this->getJobOrderRequestInfo($req, $em, $data); + $status = $this->getJobOrderRequestInfo($req, $em, $jo_manager, $data); if ($status != null) return new APIResponse(false, $status); @@ -1246,7 +1247,7 @@ class JobOrderController extends ApiController return $file_path; } - protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, &$data) + protected function getJobOrderRequestInfo(Request $req, EntityManagerInterface $em, JobOrderManager $jo_manager, &$data) { $error = $this->validateJORequest($req, $em); if ($error != null) @@ -1369,7 +1370,7 @@ class JobOrderController extends ApiController ]; // process customer and vehicle information - $cust_data = $this->processCustomerAndVehicleInformation($c_data, $em); + $cust_data = $this->processCustomerAndVehicleInformation($c_data, $em, $jo_manager); $data = [ 'trade_in_type' => $trade_in_type, @@ -1546,7 +1547,7 @@ class JobOrderController extends ApiController return null; } - protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em) + protected function processCustomerAndVehicleInformation($data, EntityManagerInterface $em, JobOrderManager $jo_manager) { $c_data = []; @@ -1611,14 +1612,14 @@ class JobOrderController extends ApiController $em->flush(); } - // check if customer already has existing job orders + // check if customer has more than one job order already if ($cust != null) { - $cust_jos = $cust->getJobOrders(); - if (count($cust_jos) <= 1) + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + if ($cust_jo_count <= 1) $flag_new_cust = true; } - + $c_data = [ 'customer' => $cust_vehicle->getCustomer(), 'customer_vehicle' => $cust_vehicle, diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 8ccde62c..8be6bd4c 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -68,6 +68,7 @@ use App\Service\PromoLogger; use App\Service\HubSelector; use App\Service\HubDistributor; use App\Service\HubFilteringGeoChecker; +use App\Service\JobOrderManager; use CrEOF\Spatial\PHP\Types\Geometry\Point; @@ -94,6 +95,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface protected $hub_geofence; protected $cust_distance_limit; protected $hub_filter_enable; + protected $jo_manager; protected $template_hash; @@ -102,7 +104,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface TranslatorInterface $translator, RiderAssignmentHandlerInterface $rah, string $country_code, WarrantyHandler $wh, RisingTideGateway $rt, PromoLogger $promo_logger, HubDistributor $hub_dist, HubFilteringGeoChecker $hub_geofence, - string $cust_distance_limit, string $hub_filter_enabled) + string $cust_distance_limit, string $hub_filter_enabled, JobOrderManager $jo_manager) { $this->em = $em; $this->ic = $ic; @@ -118,6 +120,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface $this->hub_geofence = $hub_geofence; $this->cust_distance_limit = $cust_distance_limit; $this->hub_filter_enabled = $hub_filter_enabled; + $this->jo_manager = $jo_manager; $this->loadTemplates(); } @@ -388,13 +391,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setResearchSms($req->request->get('flag_research_sms', false)) ->setResearchEmail($req->request->get('flag_research_email', false)) ->setDpaConsent($is_dpa_checked); - - // check if customer has more than one job order already - $cust_jos = $customer->getJobOrders(); - if (count($cust_jos) <= 1) - $flag_new_cust = true; } + // check if customer has more than one job order already + $cust_jo_count = $this->jo_manager->getCustomerJobOrderCount($customer); + if ($cust_jo_count <= 1) + $flag_new_cust = true; + // check if lat and lng are provided if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) { $error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.'; diff --git a/src/Service/JobOrderManager.php b/src/Service/JobOrderManager.php index c54557d6..7f097267 100644 --- a/src/Service/JobOrderManager.php +++ b/src/Service/JobOrderManager.php @@ -5,9 +5,12 @@ namespace App\Service; use App\Entity\JobOrder; use App\Ramcar\ServiceType; +use App\Ramcar\JOStatus; use Doctrine\ORM\EntityManagerInterface; +use PDO; + class JobOrderManager { protected $em; @@ -36,6 +39,24 @@ class JobOrderManager return false; } + public function getCustomerJobOrderCount($customer) + { + $db = $this->em->getConnection(); + + $cust_id = $customer->getID(); + + $query_sql = 'SELECT COUNT(*) AS jo_count FROM job_order WHERE customer_id = :cust_id AND status != :status_cancelled'; + + $query_stmt = $db->prepare($query_sql); + $query_stmt->bindValue('cust_id', $cust_id); + $query_stmt->bindValue('status_cancelled', JOStatus::CANCELLED); + + $jo_results = $query_stmt->executeQuery(); + $results = $jo_results->fetchAssociative(); + + return $results['jo_count']; + } + protected function updateCustomerVehicleBattery($cust_vehicle, $invoice) { if (($cust_vehicle != null) && ($invoice != null)) From fd28be75d1497a391682c5b3ea7f30ed50e43fbd Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 9 Nov 2023 18:03:17 +0800 Subject: [PATCH 3/6] Add command to update flag_cust_new for existing job orders. Rename flag for consistency. #773 --- src/Command/SetJobOrderCustNewCommand.php | 74 +++++++++++++++++++ src/Controller/APIController.php | 17 ++--- .../CustomerAppAPI/JobOrderController.php | 16 ++-- src/Controller/TAPI/JobOrderController.php | 14 ++-- .../JobOrderHandler/ResqJobOrderHandler.php | 8 +- src/Service/JobOrderManager.php | 6 +- 6 files changed, 103 insertions(+), 32 deletions(-) create mode 100644 src/Command/SetJobOrderCustNewCommand.php diff --git a/src/Command/SetJobOrderCustNewCommand.php b/src/Command/SetJobOrderCustNewCommand.php new file mode 100644 index 00000000..43558072 --- /dev/null +++ b/src/Command/SetJobOrderCustNewCommand.php @@ -0,0 +1,74 @@ +em = $em; + $this->jo_manager = $jo_manager; + + parent::__construct(); + } + + protected function configure() + { + $this->setName('jobOrder:setcustomernew') + ->setDescription('Set job order\'s customer new flag for existing job orders.') + ->setHelp('Set job order\'s customer new flag for existing job orders'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $em = $this->em; + + // pdo connection + $db = $em->getConnection(); + + // get all the ids for all job orders + $all_query_sql = 'SELECT id AS jo_id, customer_id AS cust_id FROM job_order ORDER BY id'; + + $all_query_stmt = $db->prepare($all_query_sql); + $all_query_stmt->execute(); + + $all_jo_results = $all_query_stmt->fetchAll(); + + foreach ($all_jo_results as $jo_row) + { + // for each jo id, get the customer id + $jo_id = $jo_row['jo_id']; + $cust_id = $jo_row['cust_id']; + + // check how many JOs have that customer id + $jo_count = $this->jo_manager->getCustomerJobOrderCount(); + + // if one or less, set flag_cust_new to true + if ($jo_count <= 1) + $this->updateCustNew($db, $jo_id); + } + + return 0; + } + + protected function updateCustNew($db, $jo_id) + { + $update_jo_sql = 'UPDATE job_order SET flag_cust_new = :flag_cust_new WHERE id = :jo_id'; + + $update_jo_stmt = $db->prepare($update_jo_sql); + $update_jo_stmt->execute([ + 'flag_cust_new' => true, + 'jo_id' => $jo_id + ]); + } +} diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 821fa490..16a9cdf5 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -931,13 +931,13 @@ class APIController extends Controller implements LoggedController } // check if customer has more than one job order already - $flag_new_cust = false; - $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + $flag_cust_new = false; + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; $jo->setCustomer($cust); - $jo->setCustNew($flag_new_cust); + $jo->setCustNew($flag_cust_new); // validate service type $stype = $req->request->get('service_type'); @@ -2868,14 +2868,13 @@ class APIController extends Controller implements LoggedController // } // check if customer has more than one job order already - $flag_new_cust = false; - $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); - error_log('cust jo count for customer id ' .$cust->getID() . ' ' . $cust_jo_count); + $flag_cust_new = false; + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; $jo->setCustomer($cust); - $jo->setCustNew($flag_new_cust); + $jo->setCustNew($flag_cust_new); // validate service type $stype = $req->request->get('service_type'); diff --git a/src/Controller/CustomerAppAPI/JobOrderController.php b/src/Controller/CustomerAppAPI/JobOrderController.php index 3bffbfc6..bd91e9fb 100644 --- a/src/Controller/CustomerAppAPI/JobOrderController.php +++ b/src/Controller/CustomerAppAPI/JobOrderController.php @@ -598,14 +598,14 @@ class JobOrderController extends ApiController // } // check if customer has more than one job order already - $flag_new_cust = false; + $flag_cust_new = false; - $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; $jo->setCustomer($cust); - $jo->setCustNew($flag_new_cust); + $jo->setCustNew($flag_cust_new); // validate service type $stype = $req->request->get('service_type'); @@ -1025,14 +1025,14 @@ class JobOrderController extends ApiController } // check if customer has more than one job order already - $flag_new_cust = false; + $flag_cust_new = false; - $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; $jo->setCustomer($cust); - $jo->setCustNew($flag_new_cust); + $jo->setCustNew($flag_cust_new); // validate service type $stype = $req->request->get('service_type'); diff --git a/src/Controller/TAPI/JobOrderController.php b/src/Controller/TAPI/JobOrderController.php index 023543be..f7541b50 100644 --- a/src/Controller/TAPI/JobOrderController.php +++ b/src/Controller/TAPI/JobOrderController.php @@ -138,7 +138,7 @@ class JobOrderController extends ApiController ->setAdvanceOrder($data['is_advance_order']) ->setStatusAutoAssign(AutoAssignStatus::NOT_ASSIGNED) ->setLandmark($data['landmark']) - ->setCustNew($data['flag_new_cust']); + ->setCustNew($data['flag_cust_new']); $jo->setCustomer($data['customer']); $jo->setCustomerVehicle($data['customer_vehicle']); @@ -1390,7 +1390,7 @@ class JobOrderController extends ApiController 'customer_vehicle' => $cust_data['customer_vehicle'], 'source' => TransactionOrigin::THIRD_PARTY, 'warranty_class' => $warranty_class, - 'flag_new_cust' => $cust_data['flag_new_cust'], + 'flag_cust_new' => $cust_data['flag_cust_new'], ]; return null; @@ -1564,7 +1564,7 @@ class JobOrderController extends ApiController // find customer + customer vehicle combo $cust_vehicle = $this->findCustomerAndCustomerVehicle($data, $em); - $flag_new_cust = false; + $flag_cust_new = false; if ($cust_vehicle == null) { // find customer given phone number @@ -1601,7 +1601,7 @@ class JobOrderController extends ApiController // add customer vehicle $cust_vehicle = $this->createCustomerVehicle($em, $cust, $data); - $flag_new_cust = true; + $flag_cust_new = true; } else { @@ -1615,15 +1615,15 @@ class JobOrderController extends ApiController // check if customer has more than one job order already if ($cust != null) { - $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust); + $cust_jo_count = $jo_manager->getCustomerJobOrderCount($cust->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; } $c_data = [ 'customer' => $cust_vehicle->getCustomer(), 'customer_vehicle' => $cust_vehicle, - 'flag_new_cust' => $flag_new_cust, + 'flag_cust_new' => $flag_cust_new, ]; return $c_data; diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 8be6bd4c..23a77289 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -363,7 +363,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface // find customer $cust_id = $req->request->get('cid'); $customer = $em->getRepository(Customer::class)->find($cust_id); - $flag_new_cust = false; + $flag_cust_new = false; if (empty($customer)) { $error_array['customer_vehicle'] = 'Invalid customer specified.'; @@ -394,9 +394,9 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } // check if customer has more than one job order already - $cust_jo_count = $this->jo_manager->getCustomerJobOrderCount($customer); + $cust_jo_count = $this->jo_manager->getCustomerJobOrderCount($customer->getID()); if ($cust_jo_count <= 1) - $flag_new_cust = true; + $flag_cust_new = true; // check if lat and lng are provided if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) { @@ -530,7 +530,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface ->setEmergencyType($etype) ->setOwnershipType($owner_type) ->setCustomerLocation($cust_location) - ->setCustNew($flag_new_cust); + ->setCustNew($flag_cust_new); // check if user is null, meaning call to create came from API if ($user != null) diff --git a/src/Service/JobOrderManager.php b/src/Service/JobOrderManager.php index 7f097267..e592b6ca 100644 --- a/src/Service/JobOrderManager.php +++ b/src/Service/JobOrderManager.php @@ -39,16 +39,14 @@ class JobOrderManager return false; } - public function getCustomerJobOrderCount($customer) + public function getCustomerJobOrderCount($customer_id) { $db = $this->em->getConnection(); - $cust_id = $customer->getID(); - $query_sql = 'SELECT COUNT(*) AS jo_count FROM job_order WHERE customer_id = :cust_id AND status != :status_cancelled'; $query_stmt = $db->prepare($query_sql); - $query_stmt->bindValue('cust_id', $cust_id); + $query_stmt->bindValue('cust_id', $customer_id); $query_stmt->bindValue('status_cancelled', JOStatus::CANCELLED); $jo_results = $query_stmt->executeQuery(); From c77591fe016a4187618d235b3ab2fdfd8842a00b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 9 Nov 2023 18:08:59 +0800 Subject: [PATCH 4/6] Fix issues during testing. #773 --- src/Command/SetJobOrderCustNewCommand.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Command/SetJobOrderCustNewCommand.php b/src/Command/SetJobOrderCustNewCommand.php index 43558072..5449b371 100644 --- a/src/Command/SetJobOrderCustNewCommand.php +++ b/src/Command/SetJobOrderCustNewCommand.php @@ -9,12 +9,14 @@ use Symfony\Component\Console\Output\OutputInterface; use Doctrine\ORM\EntityManagerInterface; +use App\Service\JobOrderManager; + class SetJobOrderCustNewCommand extends Command { protected $em; protected $jo_manager; - public function __construct(EntityManagerInterface $em, JobOrderManager) + public function __construct(EntityManagerInterface $em, JobOrderManager $jo_manager) { $this->em = $em; $this->jo_manager = $jo_manager; From 005f89105770d0e209f7ee97334b77f975293962 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 10 Nov 2023 13:29:52 +0800 Subject: [PATCH 5/6] Fix issues found during testing. #773 --- src/Command/SetJobOrderCustNewCommand.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Command/SetJobOrderCustNewCommand.php b/src/Command/SetJobOrderCustNewCommand.php index 5449b371..1e3c0d7e 100644 --- a/src/Command/SetJobOrderCustNewCommand.php +++ b/src/Command/SetJobOrderCustNewCommand.php @@ -26,7 +26,7 @@ class SetJobOrderCustNewCommand extends Command protected function configure() { - $this->setName('jobOrder:setcustomernew') + $this->setName('joborder:setcustomernew') ->setDescription('Set job order\'s customer new flag for existing job orders.') ->setHelp('Set job order\'s customer new flag for existing job orders'); } @@ -53,7 +53,7 @@ class SetJobOrderCustNewCommand extends Command $cust_id = $jo_row['cust_id']; // check how many JOs have that customer id - $jo_count = $this->jo_manager->getCustomerJobOrderCount(); + $jo_count = $this->jo_manager->getCustomerJobOrderCount($cust_id); // if one or less, set flag_cust_new to true if ($jo_count <= 1) From 91edfa6ef0472506723ca29ae74f0c4c1f6a652a Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 10 Nov 2023 13:35:49 +0800 Subject: [PATCH 6/6] Fix issues found during testing. #773 --- src/Command/SetJobOrderCustNewCommand.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Command/SetJobOrderCustNewCommand.php b/src/Command/SetJobOrderCustNewCommand.php index 1e3c0d7e..8eba6b6b 100644 --- a/src/Command/SetJobOrderCustNewCommand.php +++ b/src/Command/SetJobOrderCustNewCommand.php @@ -46,6 +46,8 @@ class SetJobOrderCustNewCommand extends Command $all_jo_results = $all_query_stmt->fetchAll(); + $output->writeln('Processing job orders...'); + foreach ($all_jo_results as $jo_row) { // for each jo id, get the customer id @@ -60,6 +62,8 @@ class SetJobOrderCustNewCommand extends Command $this->updateCustNew($db, $jo_id); } + $output->writeln('All done!'); + return 0; }