From 3789871f9aa7a7851de10d07fc417e69098a0e53 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 4 Feb 2020 08:43:39 +0000 Subject: [PATCH 1/3] Add rider and date filter to search. #319 --- src/Controller/JobOrderController.php | 3 + .../JobOrderHandler/CMBJobOrderHandler.php | 27 ++ templates/job-order/list.all.html.twig | 252 +++++++++++------- 3 files changed, 182 insertions(+), 100 deletions(-) diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 5d6127e3..7b1877aa 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -196,6 +196,7 @@ class JobOrderController extends Controller $template = $jo_handler->getTwigTemplate('jo_list_fulfillment'); + $params = $jo_handler->getOtherParameters(); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); return $this->render($template, $params); @@ -210,6 +211,7 @@ class JobOrderController extends Controller $template = $jo_handler->getTwigTemplate('jo_list_open'); + $params = $jo_handler->getOtherParameters(); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); $params['statuses'] = JOStatus::getCollection(); @@ -225,6 +227,7 @@ class JobOrderController extends Controller $template = $jo_handler->getTwigTemplate('jo_list_all'); + $params = $jo_handler->getOtherParameters(); $params['table_refresh_rate'] = $this->container->getParameter('job_order_refresh_interval'); return $this->render($template, $params); diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index 50c504fc..801857a3 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -2197,6 +2197,14 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface return null; } + public function getOtherParameters() + { + // get riders for dropdown + $params['riders'] = $this->em->getRepository(Rider::class)->findAll(); + + return $params; + } + protected function fillDropdownParameters(&$params) { @@ -2472,6 +2480,25 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface ->orWhere('c.first_name like :filter or c.last_name like :filter') ->setParameter('filter', $datatable['query']['data-rows-search'] . '%'); } + if (isset($datatable['query']['rider'])) + { + $query->innerJoin('q.rider', 'r') + ->where('r.id = :rider_id') + ->setParameter('rider_id', $datatable['query']['rider']); + } + if (isset($datatable['query']['schedule_date'])) + { + $start = $datatable['query']['schedule_date'][0] . ' ' . '00:00:00'; + $end = $datatable['query']['schedule_date'][1] . ' ' . '23:59:00'; + + $date_start = DateTime::createFromFormat('m/d/Y H:i:s', $start); + $date_end = DateTime::createFromFormat('m/d/Y H:i:s', $end); + + $query->where('q.date_schedule >= :date_start') + ->andWhere('q.date_schedule <= :date_end') + ->setParameter('date_start', $date_start) + ->setParameter('date_end', $date_end); + } break; default: $query->where('q.status = :status') diff --git a/templates/job-order/list.all.html.twig b/templates/job-order/list.all.html.twig index a4cd4afe..06773aa8 100644 --- a/templates/job-order/list.all.html.twig +++ b/templates/job-order/list.all.html.twig @@ -19,21 +19,44 @@
-
-
-
-
-
- - - - -
-
-
-
-
-
+
+
+
+
+
+ + + + +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
@@ -45,93 +68,122 @@ {% endblock %} {% block scripts %} - + // auto refresh table + setInterval(function() { + table.reload(); + }, {{ table_refresh_rate }}); + + $("#rider_list").on("change", function() { + table.search($(this).val(), "rider"); + }); + + $("#date_start").on("change", function() { + var date_start = $(this).val(); + var date_end = $("[name='date_end']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + }); + + $("#date_end").on("change", function() { + console.log($(this).val()); + + var date_end = $(this).val(); + var date_start = $("[name='date_start']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + + }); + + }); + + {% endblock %} From 15bafe2363f45911c32d977f6d1f94fc022e7d69 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 4 Feb 2020 10:33:12 +0000 Subject: [PATCH 2/3] Fix for query when multiple parameters are passed. #319 --- src/Service/JobOrderHandler/CMBJobOrderHandler.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index 801857a3..bc5f679f 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -2483,7 +2483,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface if (isset($datatable['query']['rider'])) { $query->innerJoin('q.rider', 'r') - ->where('r.id = :rider_id') + ->andWhere('r.id = :rider_id') ->setParameter('rider_id', $datatable['query']['rider']); } if (isset($datatable['query']['schedule_date'])) @@ -2494,7 +2494,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface $date_start = DateTime::createFromFormat('m/d/Y H:i:s', $start); $date_end = DateTime::createFromFormat('m/d/Y H:i:s', $end); - $query->where('q.date_schedule >= :date_start') + $query->andWhere('q.date_schedule >= :date_start') ->andWhere('q.date_schedule <= :date_end') ->setParameter('date_start', $date_start) ->setParameter('date_end', $date_end); From b6700eed360beaad0131ab20641773bae4d64b6d Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 4 Feb 2020 11:15:10 +0000 Subject: [PATCH 3/3] Add rider and date query parameters for list of to be fulfilled and open job orders. #319 --- .../JobOrderHandler/CMBJobOrderHandler.php | 50 +++- templates/job-order/list.all.html.twig | 4 +- .../job-order/list.fulfillment.html.twig | 242 +++++++++------- templates/job-order/list.open.html.twig | 261 +++++++++++------- 4 files changed, 352 insertions(+), 205 deletions(-) diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index bc5f679f..c43a25d6 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -2443,7 +2443,36 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface switch ($tier) { case 'fulfill': - $query->where('q.status IN (:statuses)') + if (isset($datatable['query']['data-rows-search'])) + { + $query->innerJoin('q.cus_vehicle', 'cv') + ->innerJoin('q.customer', 'c') + ->where('cv.plate_number like :filter') + ->orWhere('c.phone_mobile like :filter') + ->orWhere('c.first_name like :filter or c.last_name like :filter') + ->setParameter('filter', $datatable['query']['data-rows-search'] . '%'); + } + if (isset($datatable['query']['rider'])) + { + $query->innerJoin('q.rider', 'r') + ->andWhere('r.id = :rider_id') + ->setParameter('rider_id', $datatable['query']['rider']); + } + if (isset($datatable['query']['schedule_date'])) + { + $start = $datatable['query']['schedule_date'][0] . ' ' . '00:00:00'; + $end = $datatable['query']['schedule_date'][1] . ' ' . '23:59:00'; + + $date_start = DateTime::createFromFormat('m/d/Y H:i:s', $start); + $date_end = DateTime::createFromFormat('m/d/Y H:i:s', $end); + + $query->andWhere('q.date_schedule >= :date_start') + ->andWhere('q.date_schedule <= :date_end') + ->setParameter('date_start', $date_start) + ->setParameter('date_end', $date_end); + } + + $query->andWhere('q.status IN (:statuses)') ->andWhere('q.hub IN (:hubs)') ->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY) ->setParameter('hubs', $hubs, Connection::PARAM_STR_ARRAY); @@ -2469,6 +2498,25 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface $query->where('q.status IN (:statuses)') ->setParameter('statuses', $status, Connection::PARAM_STR_ARRAY); } + if (isset($datatable['query']['rider'])) + { + $query->innerJoin('q.rider', 'r') + ->andWhere('r.id = :rider_id') + ->setParameter('rider_id', $datatable['query']['rider']); + } + if (isset($datatable['query']['schedule_date'])) + { + $start = $datatable['query']['schedule_date'][0] . ' ' . '00:00:00'; + $end = $datatable['query']['schedule_date'][1] . ' ' . '23:59:00'; + + $date_start = DateTime::createFromFormat('m/d/Y H:i:s', $start); + $date_end = DateTime::createFromFormat('m/d/Y H:i:s', $end); + + $query->andWhere('q.date_schedule >= :date_start') + ->andWhere('q.date_schedule <= :date_end') + ->setParameter('date_start', $date_start) + ->setParameter('date_end', $date_end); + } break; case 'all': if (isset($datatable['query']['data-rows-search'])) diff --git a/templates/job-order/list.all.html.twig b/templates/job-order/list.all.html.twig index 06773aa8..95e1732e 100644 --- a/templates/job-order/list.all.html.twig +++ b/templates/job-order/list.all.html.twig @@ -35,6 +35,7 @@
- - - -
-
- - - - +
+
+
+
+
+ + + + +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
@@ -45,88 +69,116 @@ {% endblock %} {% block scripts %} - + // auto refresh table + setInterval(function() { + table.reload(); + }, {{ table_refresh_rate }}); + + + $("#rider_list").on("change", function() { + console.log($(this).val()); + table.search($(this).val(), "rider"); + }); + + $("#date_start").on("change", function() { + var date_start = $(this).val(); + var date_end = $("[name='date_end']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + }); + + $("#date_end").on("change", function() { + console.log($(this).val()); + + var date_end = $(this).val(); + var date_start = $("[name='date_start']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + }); + }); + {% endblock %} diff --git a/templates/job-order/list.open.html.twig b/templates/job-order/list.open.html.twig index 62af1e3a..2cae9007 100644 --- a/templates/job-order/list.open.html.twig +++ b/templates/job-order/list.open.html.twig @@ -19,21 +19,45 @@
-
-
-
-
-
- - - - -
-
-
-
-
-
+
+
+
+
+
+ + + + +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
@@ -45,104 +69,129 @@ {% endblock %} {% block scripts %} - + // auto refresh table + setInterval(function() { + table.reload(); + }, {{ table_refresh_rate }}); + + $("#rider_list").on("change", function() { + table.search($(this).val(), "rider"); + }); + + $("#date_start").on("change", function() { + var date_start = $(this).val(); + var date_end = $("[name='date_end']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + }); + + $("#date_end").on("change", function() { + console.log($(this).val()); + + var date_end = $(this).val(); + var date_start = $("[name='date_start']").val(); + var date_array = [date_start, date_end]; + + table.search(date_array, "schedule_date"); + }); + }); + {% endblock %}