diff --git a/src/Controller/CustomerController.php b/src/Controller/CustomerController.php
index e93f867f..0081d61e 100644
--- a/src/Controller/CustomerController.php
+++ b/src/Controller/CustomerController.php
@@ -3,6 +3,7 @@
namespace App\Controller;
use App\Ramcar\BaseController;
+use App\Ramcar\CustomerClassification;
use App\Ramcar\FuelType;
use App\Ramcar\VehicleStatusCondition;
use App\Entity\Customer;
@@ -103,10 +104,19 @@ class CustomerController extends BaseController
// process rows
$rows = [];
foreach ($obj_rows as $orow) {
+ $classifications = CustomerClassification::getCollection();
+
// add row data
$row['id'] = $orow->getID();
$row['first_name'] = $orow->getFirstName();
$row['last_name'] = $orow->getLastName();
+ $row['customer_classification'] = $classifications[$orow->getCustomerClassification()];
+ $row['flag_mobile_app'] = $orow->hasMobileApp();
+ $row['app_mobile_number'] = $orow->hasMobileApp() && !empty($orow->getMobileSessions()) ? $orow->getMobileSessions()[0]->getPhoneNumber() : '';
+
+ // TODO: properly add mobile numbers and plate numbers as searchable/sortable fields, use doctrine events
+ $row['mobile_numbers'] = implode("
", $orow->getMobileNumberList());
+ $row['plate_numbers'] = implode("
", $orow->getPlateNumberList());
// add row metadata
$row['meta'] = [
@@ -143,6 +153,7 @@ class CustomerController extends BaseController
// get parent associations
$params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll();
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
+ $params['classifications'] = CustomerClassification::getCollection();
$params['fuel_types'] = FuelType::getCollection();
$params['status_conditions'] = VehicleStatusCondition::getCollection();
@@ -163,8 +174,8 @@ class CustomerController extends BaseController
// set and save values
$row->setFirstName($req->request->get('first_name'))
->setLastName($req->request->get('last_name'))
- ->setCustomerNotes($req->request->get('customer_notes'))
- ->setConfirmed(false);
+ ->setCustomerClassification($req->request->get('customer_classification'))
+ ->setCustomerNotes($req->request->get('customer_notes'));
// initialize error lists
$error_array = [];
@@ -317,6 +328,7 @@ class CustomerController extends BaseController
// get parent associations
$params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll();
$params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll();
+ $params['classifications'] = CustomerClassification::getCollection();
$params['fuel_types'] = FuelType::getCollection();
$params['status_conditions'] = VehicleStatusCondition::getCollection();
@@ -343,6 +355,7 @@ class CustomerController extends BaseController
// set and save values
$row->setFirstName($req->request->get('first_name'))
->setLastName($req->request->get('last_name'))
+ ->setCustomerClassification($req->request->get('customer_classification'))
->setCustomerNotes($req->request->get('customer_notes'));
// initialize error lists
@@ -716,6 +729,7 @@ class CustomerController extends BaseController
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('q.first_name LIKE :filter')
->orWhere('q.last_name LIKE :filter')
+ ->orWhere('q.customer_classification LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
}
diff --git a/src/Controller/HubController.php b/src/Controller/HubController.php
index 8df4f6d4..5d361eee 100644
--- a/src/Controller/HubController.php
+++ b/src/Controller/HubController.php
@@ -84,6 +84,7 @@ class HubController extends BaseController
// add row data
$row['id'] = $orow->getID();
$row['name'] = $orow->getName();
+ $row['branch'] = $orow->getBranch();
$row['address'] = $orow->getAddress();
$row['contact_nums'] = $orow->getContactNumbers();
$row['time_open'] = $orow->getTimeOpen()->format('g:i A');
@@ -135,6 +136,7 @@ class HubController extends BaseController
// set and save values
$obj->setName($req->request->get('name'))
+ ->setBranch($req->request->get('branch'))
->setAddress($req->request->get('address'))
->setContactNumbers($req->request->get('contact_nums'))
->setTimeOpen($time_open)
diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php
index cda7fa32..be3db619 100644
--- a/src/Controller/JobOrderController.php
+++ b/src/Controller/JobOrderController.php
@@ -188,9 +188,7 @@ class JobOrderController extends BaseController
$datatable = $req->request->get('datatable');
// count total records
- $tquery = $qb->select('COUNT(q)')
- ->join('q.cus_vehicle', 'cv')
- ->join('q.customer', 'c');
+ $tquery = $qb->select('COUNT(q)');
$this->setQueryFilters($datatable, $tquery, $qb, $tier_params['jo_status']);
@@ -214,22 +212,14 @@ class JobOrderController extends BaseController
];
// build query
- $query = $qb->select('q')
- ->addSelect('cv.plate_number as plate_number')
- ->addSelect('c.first_name as customer_name')
- ->addSelect('c.last_name as cust_last_name');
+ $query = $qb->select('q');
$this->setQueryFilters($datatable, $query, $qb, $tier_params['jo_status']);
// check if sorting is present, otherwise use default
if (isset($datatable['sort']['field']) && !empty($datatable['sort']['field'])) {
- $prefix = '';
-
- if (!in_array($datatable['sort']['field'], ['plate_number', 'customer_name']))
- $prefix = 'q.';
-
$order = $datatable['sort']['sort'] ?? 'asc';
- $query->orderBy($prefix . $datatable['sort']['field'], $order);
+ $query->orderBy('q.' . $datatable['sort']['field'], $order);
} else {
$query->orderBy('q.date_schedule', 'asc');
}
@@ -243,26 +233,16 @@ class JobOrderController extends BaseController
// process rows
$rows = [];
foreach ($obj_rows as $orow) {
- // get service type name
- $service_type = false;
+ $statuses = JOStatus::getCollection();
$service_types = ServiceType::getCollection();
- foreach ($service_types as $key => $service) {
- if ($key == $orow[0]->getServiceType()) {
- $service_type = $service;
- break;
- }
- }
// add row data
- $row['id'] = $orow[0]->getID();
- $row['date_schedule'] = $orow[0]->getDateSchedule()->format("d M Y");
- $row['date_schedule_time'] = $orow[0]->getDateSchedule()->format("g:i A");
- $row['service_type'] = $service_type;
- $row['plate_number'] = $orow['plate_number'];
- $row['customer_name'] = $orow['customer_name'] . " " . $orow['cust_last_name'];
- $row['mobile_numbers'] = implode("
", $orow[0]->getCustomer()->getMobileNumberList());
- $row['source'] = ucfirst($orow[0]->getSource());
- $row['flag_advance'] = $orow[0]->isAdvanceOrder();
+ $row['id'] = $orow->getID();
+ $row['delivery_address'] = $orow->getDeliveryAddress();
+ $row['date_schedule'] = $orow->isAdvanceOrder() ? $orow->getDateSchedule()->format("d M Y g:i A") : 'Immediate';
+ $row['service_type'] = $service_types[$orow->getServiceType()];
+ $row['status'] = $statuses[$orow->getStatus()];
+ $row['flag_advance'] = $orow->isAdvanceOrder();
// add crud urls
$row['meta']['update_url'] = $this->generateUrl($tier_params['edit_route'], ['id' => $row['id']]);
diff --git a/src/Controller/OutletController.php b/src/Controller/OutletController.php
index da270a2c..65d2a1b8 100644
--- a/src/Controller/OutletController.php
+++ b/src/Controller/OutletController.php
@@ -96,6 +96,7 @@ class OutletController extends BaseController
// add row data
$row['id'] = $orow[0]->getID();
$row['name'] = $orow[0]->getName();
+ $row['branch'] = $orow[0]->getBranch();
$row['address'] = $orow[0]->getAddress();
$row['contact_nums'] = $orow[0]->getContactNumbers();
$row['time_open'] = $orow[0]->getTimeOpen()->format('g:i A');
@@ -153,6 +154,7 @@ class OutletController extends BaseController
// set and save values
$obj->setName($req->request->get('name'))
+ ->setBranch($req->request->get('branch'))
->setAddress($req->request->get('address'))
->setContactNumbers($req->request->get('contact_nums'))
->setTimeOpen($time_open)
@@ -165,6 +167,7 @@ class OutletController extends BaseController
if (isset($datatable['query']['data-rows-search']) && !empty($datatable['query']['data-rows-search'])) {
$query->where('hub.name LIKE :filter')
->orWhere('q.name LIKE :filter')
+ ->orWhere('q.branch LIKE :filter')
->orWhere('q.address LIKE :filter')
->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%');
}
diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php
index 201052b4..b026768a 100644
--- a/src/Entity/JobOrder.php
+++ b/src/Entity/JobOrder.php
@@ -142,7 +142,8 @@ class JobOrder
// delivery address
/**
- * @ORM\Column(type="text", nullable=true)
+ * @ORM\Column(type="text")
+ * @Assert\NotBlank()
*/
protected $delivery_address;
diff --git a/templates/customer/form.html.twig b/templates/customer/form.html.twig
index 62ebc0a7..84d28664 100644
--- a/templates/customer/form.html.twig
+++ b/templates/customer/form.html.twig
@@ -53,23 +53,34 @@