Fix and refactor customer controller and template #UAT
This commit is contained in:
parent
5769e1c366
commit
caf981e4a6
3 changed files with 31 additions and 154 deletions
|
|
@ -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()
|
public function addForm()
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('customer.add', null, 'No access.');
|
$this->denyAccessUnlessGranted('customer.add', null, 'No access.');
|
||||||
|
|
@ -151,16 +165,8 @@ class CustomerController extends BaseController
|
||||||
$params['obj'] = new Customer();
|
$params['obj'] = new Customer();
|
||||||
$params['mode'] = 'create';
|
$params['mode'] = 'create';
|
||||||
|
|
||||||
$em = $this->getDoctrine()->getManager();
|
// get dropdown parameters
|
||||||
|
$this->fillDropdownParameters($params);
|
||||||
// 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();
|
|
||||||
|
|
||||||
// response
|
// response
|
||||||
return $this->render('customer/form.html.twig', $params);
|
return $this->render('customer/form.html.twig', $params);
|
||||||
|
|
@ -322,14 +328,8 @@ class CustomerController extends BaseController
|
||||||
if (empty($row))
|
if (empty($row))
|
||||||
throw $this->createNotFoundException('The item does not exist');
|
throw $this->createNotFoundException('The item does not exist');
|
||||||
|
|
||||||
// get parent associations
|
// get dropdown parameters
|
||||||
$params['bmfgs'] = $em->getRepository(BatteryManufacturer::class)->findAll();
|
$this->fillDropdownParameters($params);
|
||||||
$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();
|
|
||||||
|
|
||||||
$params['obj'] = $row;
|
$params['obj'] = $row;
|
||||||
|
|
||||||
|
|
@ -585,12 +585,20 @@ class CustomerController extends BaseController
|
||||||
->createQueryBuilder('q');
|
->createQueryBuilder('q');
|
||||||
|
|
||||||
// build expression now since we're reusing it
|
// 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
|
// count total records
|
||||||
$tquery = $qb->select('COUNT(q)')
|
$tquery = $qb->select('COUNT(q)')
|
||||||
->join('q.customer', 'c')
|
->join('q.customer', 'c');
|
||||||
->join('c.numbers', 'n');
|
|
||||||
|
|
||||||
// add filters to count query
|
// add filters to count query
|
||||||
if (!empty($term)) {
|
if (!empty($term)) {
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class Customer
|
||||||
/**
|
/**
|
||||||
* @ORM\OneToMany(targetEntity="MobileNumber", mappedBy="customer", cascade={"persist"})
|
* @ORM\OneToMany(targetEntity="MobileNumber", mappedBy="customer", cascade={"persist"})
|
||||||
*/
|
*/
|
||||||
protected $numbers;
|
// protected $numbers;
|
||||||
|
|
||||||
// mobile phone
|
// mobile phone
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -407,12 +407,6 @@
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
// add mobile number data
|
|
||||||
formdata.push({
|
|
||||||
name: 'mobile_numbers',
|
|
||||||
value: JSON.stringify(numberRows)
|
|
||||||
});
|
|
||||||
|
|
||||||
// add vehicle data
|
// add vehicle data
|
||||||
formdata.push({
|
formdata.push({
|
||||||
name: 'vehicles',
|
name: 'vehicles',
|
||||||
|
|
@ -578,23 +572,12 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
// initialize arrays
|
// initialize arrays
|
||||||
var numberRows = [];
|
|
||||||
var numberIds = [];
|
var numberIds = [];
|
||||||
var mfgVehicles = [];
|
var mfgVehicles = [];
|
||||||
var vehicleRows = [];
|
var vehicleRows = [];
|
||||||
var ticketRows = [];
|
var ticketRows = [];
|
||||||
|
|
||||||
{#
|
var vrow = {};
|
||||||
{% 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 %}
|
|
||||||
#}
|
|
||||||
|
|
||||||
{% for key, cv in obj.getVehicles() %}
|
{% for key, cv in obj.getVehicles() %}
|
||||||
{% set vehicle = cv.getVehicle() %}
|
{% set vehicle = cv.getVehicle() %}
|
||||||
|
|
@ -637,75 +620,6 @@
|
||||||
ticketRows.push(trow);
|
ticketRows.push(trow);
|
||||||
{% endfor %}
|
{% 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
|
// remove vehicle from table
|
||||||
$(document).on('click', '.btn-delete-vehicle', function(e) {
|
$(document).on('click', '.btn-delete-vehicle', function(e) {
|
||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
|
|
@ -973,51 +887,6 @@
|
||||||
form.find(".form-control-feedback[data-field]").addClass('hide');
|
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
|
// vehicles data table
|
||||||
var vehicleOptions = {
|
var vehicleOptions = {
|
||||||
data: {
|
data: {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue