Fix and refactor customer controller and template #UAT

This commit is contained in:
Kendrick Chan 2018-03-10 21:47:27 +08:00
parent 5769e1c366
commit caf981e4a6
3 changed files with 31 additions and 154 deletions

View file

@ -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)) {

View file

@ -59,7 +59,7 @@ class Customer
/**
* @ORM\OneToMany(targetEntity="MobileNumber", mappedBy="customer", cascade={"persist"})
*/
protected $numbers;
// protected $numbers;
// mobile phone
/**

View file

@ -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 + '<div class="form-control-feedback hide" data-field="id"></div>';
}
},
{
field: 'date_registered',
title: 'Date Registered',
width: 200,
template: function (row, index, datatable) {
return row.date_registered + '<div class="form-control-feedback hide" data-field="date_registered"></div>';
}
},
{
field: 'Actions',
width: 70,
title: 'Actions',
sortable: false,
overflow: 'visible',
template: function (row, index, datatable) {
return '<button data-id="' + row.id + '" type="button" class="m-portlet__nav-link btn m-btn m-btn--hover-danger m-btn--icon m-btn--icon-only m-btn--pill btn-delete-number" title="Delete"><i class="la la-trash"></i></button>';
},
}
],
pagination: false
};
var numberTable = $("#data-mobile-numbers").mDatatable(numberOptions);
// vehicles data table
var vehicleOptions = {
data: {