Add deletion of compatible battery from vehicle. #317

This commit is contained in:
Korina Cordero 2020-01-29 09:03:56 +00:00
parent cc2dd8c7ff
commit 234d993d8f
2 changed files with 83 additions and 3 deletions

View file

@ -241,6 +241,10 @@ class VehicleController extends Controller
if (empty($row))
throw $this->createNotFoundException('The item does not exist');
// get current batteries of vehicle to be updated
$current_batteries = $row->getBatteries();
error_log('count of current batteries ' . count($current_batteries));
// set and save values
$row->setMake($req->request->get('make'))
->setModelYearFrom($req->request->get('model_year_from'))
@ -251,7 +255,6 @@ class VehicleController extends Controller
else
$row->setDisplayMobile(false);
// validate
$errors = $validator->validate($row);
@ -272,6 +275,40 @@ class VehicleController extends Controller
else
$row->setManufacturer($manufacturer);
// custom validation for batteries
$batteries = $req->request->get('batteries');
if (!empty($batteries))
{
// need to check if a battery has been removed
if (count($current_batteries) > count($batteries))
{
error_log('A battery has been removed');
}
foreach ($batteries as $battery_id)
{
$battery = $em->getRepository(Battery::class)->find($battery_id);
if (!empty($battery))
{
error_log('battery id ' . $battery->getID());
}
}
}
else
{
// no more battery compatible with vehicle
foreach ($current_batteries as $c_battery)
{
$cbatt_id = $c_battery->getID();
$battery = $em->getRepository(Battery::class)->find($cbatt_id);
if (!empty($battery))
{
$battery->removeVehicle($row);
}
}
}
// check if any errors were found
if (!empty($error_array)) {
// return validation failure response

View file

@ -135,13 +135,23 @@
$(function() {
$("#row-form").submit(function(e) {
var form = $(this);
var formdata = form.serialize();
e.preventDefault();
// add battery data
bdata = '';
$.each(battRows, function(index, battery) {
bdata += "&batteries%5B%5D=" + battery.id;
});
// append to form data
formdata += bdata;
$.ajax({
method: "POST",
url: form.prop('action'),
data: form.serialize()
data: formdata
}).done(function(response) {
// remove all error classes
removeErrors();
@ -192,6 +202,7 @@ $(function() {
});
var battRows = [];
var batteryIds = [];
{% for batt in obj.getBatteries %}
trow = {
@ -202,8 +213,30 @@ $(function() {
};
battRows.push(trow);
batteryIds.push({{ batt.getID }});
{% endfor %}
// remove battery from table
$(document).on('click', '.btn-delete', function(e) {
var btn = $(this);
var id = $(this).data('id');
$.each(battRows, function(index, battery) {
if (battery.id == id) {
battRows.splice(index, 1);
return false;
}
});
// remove from battery ids
batteryIds.splice(batteryIds.indexOf(id), 1);
// reload table
battTable.row(btn.parents('tr')).remove();
battTable.originalDataSet = battRows;
battTable.reload();
});
// battery data table
var battOptions = {
data: {
@ -235,7 +268,17 @@ $(function() {
{
field: 'sell_price',
title: 'Price'
}
},
{
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" title="Delete"><i class="la la-trash"></i></button>';
},
}
],
pagination: false
};