From 35456cfb19108c861a0fc0820416139fb49302a6 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 9 Nov 2023 12:07:26 +0800 Subject: [PATCH] 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'