diff --git a/src/Controller/CustomerController.php b/src/Controller/CustomerController.php index c4e60630..cb02841d 100644 --- a/src/Controller/CustomerController.php +++ b/src/Controller/CustomerController.php @@ -143,6 +143,20 @@ class CustomerController extends BaseController ]); } + protected function fillDropdownParameters(&$params) + { + $em = $this->getDoctrine()->getManager(); + + $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(); + + $params['years'] = $this->generateYearOptions(); + } + public function addForm() { $this->denyAccessUnlessGranted('customer.add', null, 'No access.'); @@ -151,16 +165,8 @@ class CustomerController extends BaseController $params['obj'] = new Customer(); $params['mode'] = 'create'; - $em = $this->getDoctrine()->getManager(); - - // 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(); - - $params['years'] = $this->generateYearOptions(); + // get dropdown parameters + $this->fillDropdownParameters($params); // response return $this->render('customer/form.html.twig', $params); @@ -322,14 +328,8 @@ class CustomerController extends BaseController if (empty($row)) throw $this->createNotFoundException('The item does not exist'); - // 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(); - - $params['years'] = $this->generateYearOptions(); + // get dropdown parameters + $this->fillDropdownParameters($params); $params['obj'] = $row; @@ -585,12 +585,20 @@ class CustomerController extends BaseController ->createQueryBuilder('q'); // build expression now since we're reusing it - $vehicle_label = $qb->expr()->concat('q.plate_number', $qb->expr()->literal(' - '), 'c.first_name', $qb->expr()->literal(' '), 'c.last_name', $qb->expr()->literal(' ('), 'n.id', $qb->expr()->literal(')')); + $vehicle_label = $qb->expr()->concat( + 'q.plate_number', + $qb->expr()->literal(' - '), + 'c.first_name', + $qb->expr()->literal(' '), + 'c.last_name', + $qb->expr()->literal(' ('), + 'c.phone_mobile', + $qb->expr()->literal(')') + ); // count total records $tquery = $qb->select('COUNT(q)') - ->join('q.customer', 'c') - ->join('c.numbers', 'n'); + ->join('q.customer', 'c'); // add filters to count query if (!empty($term)) { diff --git a/src/Entity/Customer.php b/src/Entity/Customer.php index 868d2ce1..63de6e43 100644 --- a/src/Entity/Customer.php +++ b/src/Entity/Customer.php @@ -59,7 +59,7 @@ class Customer /** * @ORM\OneToMany(targetEntity="MobileNumber", mappedBy="customer", cascade={"persist"}) */ - protected $numbers; + // protected $numbers; // mobile phone /** diff --git a/templates/customer/form.html.twig b/templates/customer/form.html.twig index b736191e..418d1079 100644 --- a/templates/customer/form.html.twig +++ b/templates/customer/form.html.twig @@ -407,12 +407,6 @@ e.preventDefault(); - // add mobile number data - formdata.push({ - name: 'mobile_numbers', - value: JSON.stringify(numberRows) - }); - // add vehicle data formdata.push({ name: 'vehicles', @@ -578,23 +572,12 @@ }); // initialize arrays - var numberRows = []; var numberIds = []; var mfgVehicles = []; var vehicleRows = []; var ticketRows = []; - {# - {% for number in obj.getMobileNumbers() %} - nrow = { - id: "{{ number.getID() }}", - date_registered: "{{ number.getDateRegistered()|date('d M Y - h:i A') }}" - }; - - numberRows.push(nrow); - numberIds.push("{{ number.getID() }}"); - {% endfor %} - #} + var vrow = {}; {% for key, cv in obj.getVehicles() %} {% set vehicle = cv.getVehicle() %} @@ -637,75 +620,6 @@ ticketRows.push(trow); {% endfor %} - // add a mobile number to the table - $("#btn-add-mobile-number").click(function() { - var id = $("#mobile-number").val(); - var dateRegistered = moment().format("DD MMM YYYY - hh:mm A"); - var index = $("#vehicle").find(":selected").data('index'); - - if (!id) { - swal({ - title: 'Whoops', - text: 'You did not specify a mobile number.', - type: 'warning' - }); - - return true; - } else if (id.toString().length > 12) { - swal({ - title: 'Whoops', - text: 'Invalid mobile number specified.', - type: 'warning' - }); - - return true; - } else if (numberIds.indexOf(id) !== -1) { - swal({ - title: 'Whoops', - text: 'This mobile number is already on the list.', - type: 'warning' - }); - - return true; - } - - // add number to arrays - numberIds.push(id); - numberRows.push({ - id: id, - date_registered: dateRegistered - }); - - // clear input fields - $("#mobile-number").val(""); - - // refresh the data table - numberTable.originalDataSet = numberRows; - numberTable.reload(); - }); - - // remove mobile number from table - $(document).on('click', '.btn-delete-number', function(e) { - var btn = $(this); - var id = $(this).data('id'); - var table = $(this).closest('table'); - - // remove from ids - numberIds.splice(numberIds.indexOf(id), 1); - - $.each(numberRows, function(index, row) { - if (row.id == id) { - numberRows.splice(index, 1); - return false; - } - }); - - // reload table - numberTable.row(btn.parents('tr')).remove(); - numberTable.originalDataSet = numberRows; - numberTable.reload(); - }); - // remove vehicle from table $(document).on('click', '.btn-delete-vehicle', function(e) { var btn = $(this); @@ -973,51 +887,6 @@ form.find(".form-control-feedback[data-field]").addClass('hide'); } - // mobile numbers data table - var numberOptions = { - data: { - type: 'local', - source: numberRows, - saveState: { - cookie: false, - webstorage: false - } - }, - layout: { - scroll: true - }, - columns: [ - { - field: 'id', - title: 'Contact Number', - template: function (row, index, datatable) { - return row.id + '
'; - } - }, - { - field: 'date_registered', - title: 'Date Registered', - width: 200, - template: function (row, index, datatable) { - return row.date_registered + '
'; - } - }, - { - field: 'Actions', - width: 70, - title: 'Actions', - sortable: false, - overflow: 'visible', - template: function (row, index, datatable) { - return ''; - }, - } - ], - pagination: false - }; - - var numberTable = $("#data-mobile-numbers").mDatatable(numberOptions); - // vehicles data table var vehicleOptions = { data: {