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

This commit is contained in:
Korina Cordero 2023-11-09 12:07:26 +08:00
parent 0ba63cc106
commit 35456cfb19
4 changed files with 59 additions and 4 deletions

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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)

View file

@ -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 = '<span class="m-badge m-badge--success m-badge--wide">Yes</span>';
} else {
tag = '<span class="m-badge m-badge--danger m-badge--wide">No</span>';
}
return tag;
}
},
{
field: 'customer_name',
title: 'Customer'