update
This commit is contained in:
@ -96,6 +96,25 @@ class VehiclesController extends Controller
|
|||||||
{
|
{
|
||||||
$url_fvhc = "";
|
$url_fvhc = "";
|
||||||
$url_stnk = "";
|
$url_stnk = "";
|
||||||
|
if ($req->hasFile("fvhc_file")) {
|
||||||
|
$fileFvhc = $req->file("fvhc_file");
|
||||||
|
$fvhcContent = file_get_contents($fileFvhc->getRealPath());
|
||||||
|
$req->fvhc_base64 = base64_encode($fvhcContent);
|
||||||
|
} else {
|
||||||
|
$req->fvhc_base64 = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ambil file stnk_file dan ubah ke base64
|
||||||
|
if ($req->hasFile("stnk_file")) {
|
||||||
|
$fileStnk = $req->file("stnk_file");
|
||||||
|
$stnkContent = file_get_contents($fileStnk->getRealPath());
|
||||||
|
$req->stnk_base64 = base64_encode($stnkContent);
|
||||||
|
} else {
|
||||||
|
$req->stnk_base64 = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$req->dvc_id = $req->dvc_id === "undefined" ? null : $req->dvc_id;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$now = time();
|
$now = time();
|
||||||
|
|
||||||
@ -182,23 +201,23 @@ class VehiclesController extends Controller
|
|||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($device_id !== str_pad(0, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT)) {
|
// if ($device_id !== str_pad(0, Vehicles::MAX_DEVICE_ID, "0", STR_PAD_LEFT)) {
|
||||||
$uniqDeviceId = Vehicles::getVehicleByDeviceId($device_id);
|
// $uniqDeviceId = Vehicles::getVehicleByDeviceId($device_id);
|
||||||
if (count($uniqDeviceId) > 0) {
|
// if (count($uniqDeviceId) > 0) {
|
||||||
$apiResp = Responses::bad_request("device id has been used");
|
// $apiResp = Responses::bad_request("device id has been used");
|
||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
$uniqSimcard = Vehicles::getVehicleBySimcard($req->simcard);
|
// $uniqSimcard = Vehicles::getVehicleBySimcard($req->simcard);
|
||||||
if (count($uniqSimcard) > 0) {
|
// if (count($uniqSimcard) > 0) {
|
||||||
$apiResp = Responses::bad_request("simcard has been used");
|
// $apiResp = Responses::bad_request("simcard has been used");
|
||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
}
|
// }
|
||||||
|
|
||||||
$uniqPlatNo = Vehicles::getVehicleByPlatNo($req->nopol1, $req->nopol2, $req->nopol3);
|
$uniqPlatNo = Vehicles::getVehicleByPlatNo($req->nopol1, $req->nopol2, $req->nopol3);
|
||||||
if (count($uniqPlatNo) > 0) {
|
if (count($uniqPlatNo) > 0) {
|
||||||
$apiResp = Responses::bad_request("plat number has been used");
|
$apiResp = Responses::bad_request("Vehicle identity number has been used");
|
||||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1952
resources/views/menu_v1/vehicles.blade copy.php
Executable file
1952
resources/views/menu_v1/vehicles.blade copy.php
Executable file
File diff suppressed because it is too large
Load Diff
@ -86,7 +86,8 @@
|
|||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form>
|
{{-- <form> --}}
|
||||||
|
<form id="vehicleForm" method="POST" enctype="multipart/form-data">
|
||||||
{{-- Vehicle Data --}}
|
{{-- Vehicle Data --}}
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="border-bottom">
|
<div class="border-bottom">
|
||||||
@ -947,23 +948,22 @@
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function safeVal(selector) {
|
||||||
|
const val = $(selector).val();
|
||||||
|
return (val === undefined || val === null || val === '') ? null : val;
|
||||||
|
}
|
||||||
|
|
||||||
const VNew = {
|
const VNew = {
|
||||||
activate: function() {
|
activate: function() {
|
||||||
VNew.event();
|
VNew.event();
|
||||||
},
|
},
|
||||||
event: function() {
|
event: function() {
|
||||||
// modal
|
// Tampilkan modal saat tombol diklik
|
||||||
$('#btnMdlNewVhc').on('click', function() {
|
$('#btnMdlNewVhc').on('click', function() {
|
||||||
$('#mdlNewVhc').modal('show');
|
$('#mdlNewVhc').modal('show');
|
||||||
});
|
});
|
||||||
$('#mdlNewVhc').on('shown.bs.modal', function() {
|
|
||||||
|
|
||||||
});
|
// Datepicker untuk tanggal
|
||||||
$('#btnSubmitNewVhc').on('click', function() {
|
|
||||||
let data = VNew.getData();
|
|
||||||
VNew.submitData(data);
|
|
||||||
});
|
|
||||||
// datepicker
|
|
||||||
$('#add-stnk-exp').datepicker({
|
$('#add-stnk-exp').datepicker({
|
||||||
format: 'dd-mm-yyyy',
|
format: 'dd-mm-yyyy',
|
||||||
startDate: moment().add(1, 'days').toDate(),
|
startDate: moment().add(1, 'days').toDate(),
|
||||||
@ -973,118 +973,139 @@
|
|||||||
startDate: moment().add(1, 'days').toDate(),
|
startDate: moment().add(1, 'days').toDate(),
|
||||||
endDate: moment().add(6, 'month').toDate(),
|
endDate: moment().add(6, 'month').toDate(),
|
||||||
});
|
});
|
||||||
// $('#add-kirexp').datepicker({
|
|
||||||
// format: 'dd-mm-yyyy',
|
// Reset input file saat diklik
|
||||||
// startDate: moment().add(1, 'days').toDate(),
|
|
||||||
// endDate: moment().add(1, 'year').toDate(),
|
|
||||||
// });
|
|
||||||
// file
|
|
||||||
$('#add-fvhc-file').on('click', function() {
|
$('#add-fvhc-file').on('click', function() {
|
||||||
$('#add-fvhc-file').val('');
|
$(this).val('');
|
||||||
});
|
});
|
||||||
$('#add-stnk-file').on('click', function() {
|
$('#add-stnk-file').on('click', function() {
|
||||||
$('#add-stnk-file').val('');
|
$(this).val('');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Submit form
|
||||||
|
$('#btnSubmitNewVhc').on('click', function() {
|
||||||
|
let data = VNew.getData();
|
||||||
|
VNew.submitData(data);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getData: function() {
|
getData: function() {
|
||||||
let data = {};
|
let data = new FormData();
|
||||||
data.fvhc_base64 = $('#add-fvhc-base64').val().replace(/^data:image\/(png|jpg|jpeg);base64,/, '');
|
|
||||||
data.vhc_name = $('#add-vhcname').val();
|
data.append('vhc_name', safeVal('#add-vhcname'));
|
||||||
// data.device_id = $('#add-deviceid').val();
|
|
||||||
// data.simcard = $('#add-simcard').val();
|
|
||||||
let selected_device = $('#add-deviceid :selected');
|
let selected_device = $('#add-deviceid :selected');
|
||||||
data.dvc_id = selected_device.val();
|
data.append('dvc_id', safeVal('#add-deviceid') ?? 0);
|
||||||
data.device_id = selected_device.data('device_id');
|
data.append('device_id', selected_device.data('device_id') ?? 0);
|
||||||
data.simcard = selected_device.data('simcard');
|
data.append('simcard', selected_device.data('simcard') ?? 0);
|
||||||
data.brand_id = $('#add-brand').val();
|
|
||||||
data.type_id = $('#add-type').val();
|
|
||||||
data.model_id = $('#add-model').val();
|
|
||||||
|
|
||||||
data.speed_limit = $('#add-speedlimit').val();
|
data.append('brand_id', safeVal('#add-brand'));
|
||||||
data.fuel_capacity = $('#add-fuelcapacity').val();
|
data.append('type_id', safeVal('#add-type'));
|
||||||
data.fuel_drop_treshold = $('#add-fueldroptreshold').val();
|
data.append('model_id', safeVal('#add-model') ?? 0);
|
||||||
data.max_pressure = $('#add-maxpressure').val();
|
data.append('speed_limit', safeVal('#add-speedlimit'));
|
||||||
|
data.append('fuel_capacity', safeVal('#add-fuelcapacity') ?? 0);
|
||||||
|
data.append('fuel_drop_treshold', safeVal('#add-fueldroptreshold') ?? 0);
|
||||||
|
data.append('max_pressure', safeVal('#add-maxpressure') ?? 0);
|
||||||
|
data.append('d_current', safeVal('#add-dcurrent') ?? 0);
|
||||||
|
data.append('d_assign', safeVal('#add-dassign') ?? 0);
|
||||||
|
|
||||||
data.d_current = $('#add-dcurrent').val();
|
// tanggal juga sama, pakai safeVal dan cek dulu
|
||||||
data.d_assign = $('#add-dassign').val();
|
const stnkExp = safeVal('#add-stnk-exp');
|
||||||
|
if (stnkExp) data.append('stnk_exp', stnkExp.split('-').reverse().join('-'));
|
||||||
|
else data.append('stnk_exp', null);
|
||||||
|
|
||||||
data.stnk_base64 = $('#add-stnk-base64').val().replace(/^data:image\/(png|jpg|jpeg);base64,/, '');
|
data.append('nopol1', safeVal('#add-nopol1'));
|
||||||
data.stnk_exp = $('#add-stnk-exp').val().split('-').reverse().join('-');
|
data.append('stnk_vyear', safeVal('#add-stnk-vyear'));
|
||||||
data.nopol1 = $('#add-nopol1').val();
|
data.append('cc', safeVal('#add-stnk-cc'));
|
||||||
// data.nopol2 = $('#add-nopol2').val();
|
data.append('vin', safeVal('#add-stnk-vin'));
|
||||||
// data.nopol3 = $('#add-nopol3').val();
|
data.append('en', safeVal('#add-stnk-en'));
|
||||||
|
data.append('color', safeVal('#add-stnk-color'));
|
||||||
|
data.append('fuel_type', safeVal('#add-stnk-fueltype'));
|
||||||
|
data.append('tnkb_color', safeVal('#add-stnk-tnkbcolor'));
|
||||||
|
data.append('regis_year', safeVal('#add-stnk-regisyear'));
|
||||||
|
|
||||||
data.stnk_vyear = $('#add-stnk-vyear').val();
|
const taxExp = safeVal('#add-stnk-taxexp');
|
||||||
data.cc = $('#add-stnk-cc').val();
|
if (taxExp) data.append('tax_exp', taxExp.split('-').reverse().join('-'));
|
||||||
data.vin = $('#add-stnk-vin').val();
|
else data.append('tax_exp', null);
|
||||||
data.en = $('#add-stnk-en').val();
|
|
||||||
data.color = $('#add-stnk-color').val();
|
data.append('vendor_id', safeVal('#add-vendor_id'));
|
||||||
data.fuel_type = $('#add-stnk-fueltype').val();
|
|
||||||
data.tnkb_color = $('#add-stnk-tnkbcolor').val();
|
// File input (cek ada file atau tidak)
|
||||||
data.regis_year = $('#add-stnk-regisyear').val();
|
const fvhcFile = $('#add-fvhc-file')[0].files[0];
|
||||||
data.tax_exp = $('#add-stnk-taxexp').val().split('-').reverse().join('-');
|
if (fvhcFile) data.append('fvhc_file', fvhcFile);
|
||||||
// data.kir_exp = $('#add-kirexp').val().split('-').reverse().join('-');
|
|
||||||
|
const stnkFile = $('#add-stnk-file')[0].files[0];
|
||||||
|
if (stnkFile) data.append('stnk_file', stnkFile);
|
||||||
|
|
||||||
data.vendor_id = $('#add-vendor_id').val();
|
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
submitData: async function(data) {
|
submitData: function(data) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (typeof $('#btnSubmitNewVhc').attr('disabed') != 'undefined') {
|
if ($('#btnSubmitNewVhc').is('[disabled]')) {
|
||||||
resolve({
|
resolve({
|
||||||
type: 'fail'
|
type: 'fail'
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$('#btnSubmitNewVhc').attr('disabed', true);
|
|
||||||
$('#btnSubmitNewVhc').addClass('d-none');
|
|
||||||
|
$('#btnSubmitNewVhc').attr('disabled', true).addClass('d-none');
|
||||||
$('#add-btnSubmitNewVhc').removeClass('d-none');
|
$('#add-btnSubmitNewVhc').removeClass('d-none');
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "{{ route('api_add_vehicle') }}",
|
url: "{{ route('api_add_vehicle') }}",
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
crossDomain: true,
|
crossDomain: true,
|
||||||
processData: true,
|
processData: false,
|
||||||
|
contentType: false,
|
||||||
headers: {
|
headers: {
|
||||||
'x-api-key': Helper.getCookie('_trtk'),
|
'x-api-key': Helper.getCookie('_trtk'),
|
||||||
'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
|
'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
|
||||||
},
|
},
|
||||||
data: data,
|
data: data,
|
||||||
success: (data, textStatus, jqXHR) => {
|
success: (res) => {
|
||||||
$('#btnSubmitNewVhc').removeAttr('disabed');
|
$('#btnSubmitNewVhc').removeAttr('disabled').removeClass('d-none');
|
||||||
$('#btnSubmitNewVhc').removeClass('d-none');
|
|
||||||
$('#add-btnSubmitNewVhc').addClass('d-none');
|
$('#add-btnSubmitNewVhc').addClass('d-none');
|
||||||
if (data.meta.type != 'success') {
|
|
||||||
|
if (res.meta?.type !== 'success') {
|
||||||
|
Helper.toast('Warning', 'just now', res.meta?.message || 'Failed to add vehicle');
|
||||||
resolve({
|
resolve({
|
||||||
type: 'fail'
|
type: 'fail'
|
||||||
});
|
});
|
||||||
Helper.toast('Warning', 'just now', data.meta.message);
|
return;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
Helper.toast('Success', 'just now', 'success add new vehicle');
|
|
||||||
|
Helper.toast('Success', 'just now', 'Successfully added vehicle');
|
||||||
$('#mdlNewVhc').modal('hide');
|
$('#mdlNewVhc').modal('hide');
|
||||||
DTable.reload();
|
DTable.reload();
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
type: 'success'
|
type: 'success'
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
error: (jqXHR, textStatus, error) => {
|
error: (jqXHR) => {
|
||||||
$('#btnSubmitNewVhc').removeAttr('disabed');
|
$('#btnSubmitNewVhc').removeAttr('disabled').removeClass('d-none');
|
||||||
$('#btnSubmitNewVhc').removeClass('d-none');
|
|
||||||
$('#add-btnSubmitNewVhc').addClass('d-none');
|
$('#add-btnSubmitNewVhc').addClass('d-none');
|
||||||
|
|
||||||
if (jqXHR.status >= 500) {
|
if (jqXHR.status >= 500) {
|
||||||
Helper.toast('Error', 'just now', 'Please try again');
|
Helper.toast('Error', 'just now', 'Server error occurred, please try again');
|
||||||
} else {
|
} else {
|
||||||
Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
|
Helper.toast('Error', 'just now', jqXHR.responseJSON?.meta?.message || 'Error during submission');
|
||||||
.message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
type: 'error'
|
type: 'error'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
VNew.activate();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
const VEdt = {
|
const VEdt = {
|
||||||
activate: function() {
|
activate: function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user