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'