From 8f4b745025bc5d44ec873059c2b3c92b711ad705 Mon Sep 17 00:00:00 2001 From: Ramon Gutierrez Date: Wed, 31 Jan 2018 23:56:25 +0800 Subject: [PATCH] Update list columns and fields based on feedback --- src/Controller/CustomerController.php | 18 ++++++++- src/Controller/HubController.php | 2 + src/Controller/JobOrderController.php | 40 +++++--------------- src/Controller/OutletController.php | 3 ++ src/Entity/JobOrder.php | 3 +- templates/customer/form.html.twig | 17 +++++++-- templates/customer/list.html.twig | 33 ++++++++++++++++ templates/hub/form.html.twig | 48 +++++++++++++++--------- templates/hub/list.html.twig | 6 ++- templates/job-order/form.html.twig | 29 ++++++-------- templates/job-order/list.html.twig | 31 +++++++-------- templates/outlet/form.html.twig | 54 +++++++++++++++------------ templates/outlet/list.html.twig | 6 ++- 13 files changed, 175 insertions(+), 115 deletions(-) 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 @@
-
+
-
+
+
+
+ + +
-
+
diff --git a/templates/customer/list.html.twig b/templates/customer/list.html.twig index 298d3eea..507e3f89 100644 --- a/templates/customer/list.html.twig +++ b/templates/customer/list.html.twig @@ -91,6 +91,20 @@ field: 'last_name', title: 'Last Name' }, + { + field: 'customer_classification', + title: 'Classification' + }, + { + field: 'mobile_numbers', + title: 'Mobile Numbers', + sortable: false + }, + { + field: 'plate_numbers', + title: 'Plate Numbers', + sortable: false + }, { field: 'flag_confirmed', title: 'Status', @@ -106,6 +120,25 @@ return tag; } }, + { + field: 'flag_mobile_app', + title: 'Has Mobile App?', + template: function (row, index, datatable) { + var tag = ''; + + if (row.flag_mobile_app === true) { + tag = 'Yes'; + } else { + tag = 'No'; + } + + return tag; + } + }, + { + field: 'app_mobile_number', + title: 'Registered Number' + }, { field: 'Actions', width: 110, diff --git a/templates/hub/form.html.twig b/templates/hub/form.html.twig index 7b78ce59..8b3c54ee 100644 --- a/templates/hub/form.html.twig +++ b/templates/hub/form.html.twig @@ -58,6 +58,31 @@
+
+ + + +
+
+
+
+ + + +
+
+ + + +
+
+
-
-
- - - -
-
- - - -
-