diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index b1b6d947..c154fbc2 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -19,6 +19,7 @@ doctrine: point: CrEOF\Spatial\DBAL\Types\Geometry\PointType polygon: CrEOF\Spatial\DBAL\Types\Geometry\PolygonType linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType + multipolygon: CrEOF\Spatial\DBAL\Types\Geometry\MultiPolygonType orm: auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 5d6127e3..96d8887b 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -10,6 +10,8 @@ use App\Entity\CustomerVehicle; use App\Entity\Promo; use App\Entity\Battery; use App\Entity\JobOrder; +use App\Entity\VehicleManufacturer; +use App\Entity\Vehicle; use App\Service\InvoiceGeneratorInterface; use App\Service\JobOrderHandlerInterface; @@ -196,6 +198,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 +213,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 +229,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); @@ -691,8 +696,10 @@ class JobOrderController extends Controller // get customer vehicle $cv = $em->getRepository(CustomerVehicle::class)->find($cvid); + /* if ($cv == null) throw new \Exception('Could not get customer vehicle'); + */ // instantiate invoice criteria @@ -833,7 +840,7 @@ class JobOrderController extends Controller /** * @Menu(selected="jo_onestep_form") */ - public function oneStepForm(JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis) + public function oneStepForm(EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis) { $this->denyAccessUnlessGranted('jo_onestep.form', null, 'No access.'); @@ -841,6 +848,8 @@ class JobOrderController extends Controller $params['submit_url'] = $this->generateUrl('jo_onestep_submit'); $params['return_url'] = $this->generateUrl('jo_onestep_form'); $params['map_js_file'] = $gis->getJSJOFile(); + $params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll(); + $params['vmakes'] = $em->getRepository(Vehicle::class)->findAll(); $template = $params['template']; @@ -877,7 +886,7 @@ class JobOrderController extends Controller /** * @Menu(selected="jo_onestep_edit_form") */ - public function oneStepEditForm($id, JobOrderHandlerInterface $jo_handler, + public function oneStepEditForm($id, EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, GISManagerInterface $gis, MapTools $map_tools) { $this->denyAccessUnlessGranted('jo_onestep.edit', null, 'No access.'); @@ -886,6 +895,8 @@ class JobOrderController extends Controller $params['submit_url'] = $this->generateUrl('jo_onestep_edit_submit', ['id' => $id]); $params['return_url'] = $this->generateUrl('jo_open'); $params['map_js_file'] = $gis->getJSJOFile(); + $params['vmfgs'] = $em->getRepository(VehicleManufacturer::class)->findAll(); + $params['vmakes'] = $em->getRepository(Vehicle::class)->findAll(); $template = $params['template']; diff --git a/src/Ramcar/InvoiceCriteria.php b/src/Ramcar/InvoiceCriteria.php index 684c5883..5ea5e623 100644 --- a/src/Ramcar/InvoiceCriteria.php +++ b/src/Ramcar/InvoiceCriteria.php @@ -104,7 +104,7 @@ class InvoiceCriteria return $this->entries; } - public function setCustomerVehicle(CustomerVehicle $cv) + public function setCustomerVehicle(CustomerVehicle $cv = null) { $this->cv = $cv; return $this; diff --git a/src/Service/CustomerHandler/CMBCustomerHandler.php b/src/Service/CustomerHandler/CMBCustomerHandler.php index fb6a888e..d8107514 100644 --- a/src/Service/CustomerHandler/CMBCustomerHandler.php +++ b/src/Service/CustomerHandler/CMBCustomerHandler.php @@ -519,6 +519,7 @@ class CMBCustomerHandler implements CustomerHandlerInterface ], 'vehicle' => [ 'id' => $vehicle->getID(), + 'mfg_id' => $vehicle->getManufacturer()->getID(), 'mfg_name' => $vehicle->getManufacturer()->getName(), 'make' => $vehicle->getMake(), 'model_year_from' => $vehicle->getModelYearFrom(), diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index 234f1aa4..27631d7f 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -2197,6 +2197,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface return null; } +<<<<<<< HEAD public function updateVehicleBattery(JobOrder $jo) { // check if new battery @@ -2248,6 +2249,14 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface ->setWarrantyExpiration($warr_date); } + public function getOtherParameters() + { + // get riders for dropdown + $params['riders'] = $this->em->getRepository(Rider::class)->findAll(); + + return $params; + } + protected function fillDropdownParameters(&$params) { $em = $this->em; @@ -2434,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); @@ -2460,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'])) @@ -2471,6 +2528,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') + ->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; default: $query->where('q.status = :status') diff --git a/templates/job-order/cmb.form.onestep.html.twig b/templates/job-order/cmb.form.onestep.html.twig index 8e4ac45d..fa56f5dc 100644 --- a/templates/job-order/cmb.form.onestep.html.twig +++ b/templates/job-order/cmb.form.onestep.html.twig @@ -30,6 +30,7 @@
+
{%if ftags.vehicle_dropdown %} @@ -42,12 +43,14 @@
+
@@ -75,20 +78,27 @@ {% endif %}
-
+

Customer Details

+ + +
- +
- +
@@ -97,7 +107,7 @@
{% trans %}country_code_prefix{% endtrans %} - +
@@ -105,7 +115,7 @@
{% trans %}country_code_prefix{% endtrans %} - +
@@ -115,7 +125,7 @@
{% trans %}country_code_prefix{% endtrans %} - +
@@ -123,7 +133,7 @@
{% trans %}country_code_prefix{% endtrans %} - +
@@ -131,7 +141,7 @@
- +
@@ -144,32 +154,47 @@
- - - + + + +
+
+ + +
- - - -
-
- - - + + +
- - - + + +
+
@@ -607,6 +632,33 @@ + // 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 %} diff --git a/templates/job-order/list.fulfillment.html.twig b/templates/job-order/list.fulfillment.html.twig index 46210a9d..e28512c7 100644 --- a/templates/job-order/list.fulfillment.html.twig +++ b/templates/job-order/list.fulfillment.html.twig @@ -19,21 +19,45 @@
-
-
-
-
-
- - - - -
-
-
-
-
-
+
+
+
+
+
+ + + + +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+
+
+
+
@@ -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 %}