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()
|
||||
{
|
||||
$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)) {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ class Customer
|
|||
/**
|
||||
* @ORM\OneToMany(targetEntity="MobileNumber", mappedBy="customer", cascade={"persist"})
|
||||
*/
|
||||
protected $numbers;
|
||||
// protected $numbers;
|
||||
|
||||
// mobile phone
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
Loading…
Reference in a new issue