Rapihin setup/member/lot-parking + fitur intercom, exclude WIP controller & file sampah dari git
Kumpulan perubahan yang udah numpuk di working tree: refactor Setup (Gate/Vehicle/Member), rapihin memberin & stiker, service parking baru (ParkingUtilsServices, NetworkService), model/migration lot-parking & DHCP reservation, dan fitur baru Intercom (controller/model/migration/ view). ReportTransaksiController versi lokal ini WIP (~90%, masih didebug) - versi yang bener ada di server, jadi dikeluarin dari git (ditambahin ke .gitignore) biar gak numpuk nindihin punya server pas git pull di sana. Sekalian keluarin dump mentah tabel softseting (1.8MB, nyasar ke-commit), file .bak, dan arsip ad-hoc (api.tgz, c.zip) yang emang bukan source code. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01EAJc2mrpj2cSTe4oowLPzQ
This commit is contained in:
+49
-32
@@ -1,5 +1,13 @@
|
||||
$(document).ready(function () {
|
||||
|
||||
// Pastikan setiap request AJAX non-GET membawa token CSRF terbaru.
|
||||
// Mencegah 419 "CSRF token mismatch" walau ada call yang lupa kirim header.
|
||||
$(document).ajaxSend(function (event, jqxhr, settings) {
|
||||
if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type || '')) {
|
||||
jqxhr.setRequestHeader('X-CSRF-TOKEN', $('meta[name="csrf-token"]').attr('content'));
|
||||
}
|
||||
});
|
||||
|
||||
$.validator.addClassRules('no-spinner-time', {
|
||||
required: true,
|
||||
min: 1
|
||||
@@ -30,14 +38,10 @@ $(document).ready(function () {
|
||||
let nama = $(this).data('nama');
|
||||
console.log(id);
|
||||
|
||||
let url = "{{ route('vehicle-price.show',':id') }}";
|
||||
url = url.replace(':id', id);
|
||||
|
||||
$.ajax({
|
||||
url: '/setup/master/price/' + id,
|
||||
type: 'GET',
|
||||
success: function (r) {
|
||||
console.log(r);
|
||||
success: function (r) { console.log(r);
|
||||
$('#id_mobil').val(r.id_mobil);
|
||||
$('.title').text('Ubah Tarif Kendaraan ' + nama);
|
||||
$('#waktu_gratis').val(r.waktu_gratis); // waktu kurang dari n pertama
|
||||
@@ -53,35 +57,33 @@ $(document).ready(function () {
|
||||
$('#tarif').val(r.tarif); // tarif berikut nya
|
||||
$('#waktu_tarif').val(r.waktu_tarif); // per n menit
|
||||
$('#maksimum').val(r.maksimum);
|
||||
if(r.time_base == 1) {
|
||||
$('#maks_cond').val(r.time_base_maks).show();
|
||||
$('#maksimum-cond').val(0).trigger('change');
|
||||
$('.maks_cond_day').hide();
|
||||
$('#maks_cond_day').hide();
|
||||
} else {
|
||||
$('#maks_cond').hide();
|
||||
$('#maksimum-cond').val(1).trigger('change');
|
||||
$('.maks_cond_day').show();
|
||||
$('#maks_cond_day').val(r.min_per_hari).show();
|
||||
}
|
||||
$('#maksimum_mode').val(r.time_base == 1 ? 'hour' : 'day');
|
||||
$('#maksimum_hour').val(r.time_base_maks || 24);
|
||||
$('#maksimum_day_minute').val(r.min_per_hari || 0);
|
||||
$('#maksimum_mode').trigger('change');
|
||||
$('#denda').val(r.denda);
|
||||
$('#denda_member').val(r.denda_member);
|
||||
$('#denda_only_casual').prop('checked', Number(r.denda_only_casual) === 1);
|
||||
$('#denda_only').prop('checked', Number(r.denda_only) === 1);
|
||||
$('#asuransi_incl').val(r.asuransi_incl || 0);
|
||||
bootstrap.Tab.getOrCreateInstance(document.querySelector('#modal-vehicle .nav-link[href="#tarif"]')).show();
|
||||
},
|
||||
error: function (xhr) {
|
||||
Swal.fire({icon: 'error', title: 'Gagal memuat tarif', text: xhr.responseJSON?.message || 'Data tarif tidak ditemukan.'});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#maksimum-cond').on('change', function() {
|
||||
let selectMaxCond = $(this).val();
|
||||
if (selectMaxCond == 0 ) {
|
||||
$('#maks_cond').show().val(24);
|
||||
$('#maksimum_mode').on('change', function() {
|
||||
let mode = $(this).val();
|
||||
if (mode === 'hour') {
|
||||
$('#maksimum_hour').show();
|
||||
$('.maks_cond_day').hide();
|
||||
$('#maks_cond_day').val(1).hide();
|
||||
} else if (selectMaxCond == 1) {
|
||||
$('#maks_cond').hide();
|
||||
$('.maks_cond_day').show();
|
||||
$('#maks_cond_day').show().val(60);
|
||||
$('#maksimum_day_minute').hide();
|
||||
} else {
|
||||
|
||||
$('#maksimum_hour').hide();
|
||||
$('.maks_cond_day').show();
|
||||
$('#maksimum_day_minute').show();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -91,11 +93,16 @@ $(document).ready(function () {
|
||||
return false;
|
||||
}
|
||||
|
||||
let id = $('#id_mobil').val();
|
||||
if (!id) {
|
||||
Swal.fire({icon: 'warning', title: 'ID kendaraan kosong', text: 'Tutup modal lalu klik tombol Tarif lagi.'});
|
||||
return false;
|
||||
}
|
||||
|
||||
let vehicleRate = $('#show-tarif').serialize();
|
||||
|
||||
let id = $('#id_mobil').val();
|
||||
let url = $(this).data('url');
|
||||
url = url.replace(':id', id);
|
||||
url = url.replace(':id', encodeURIComponent(id));
|
||||
console.log(url);
|
||||
|
||||
$.ajax({
|
||||
@@ -106,11 +113,21 @@ $(document).ready(function () {
|
||||
},
|
||||
data: vehicleRate,
|
||||
success: function(r) {
|
||||
console.log(r);
|
||||
|
||||
if (!r.status) {
|
||||
Swal.fire({icon: 'info', title: r.message || 'Tidak ada perubahan data'});
|
||||
return;
|
||||
}
|
||||
$('#modal-vehicle').modal('hide');
|
||||
}
|
||||
Swal.fire({icon: 'success', title: 'Tarif diperbarui', timer: 1500, showConfirmButton: false});
|
||||
},
|
||||
error: function(xhr) {
|
||||
if (xhr.status === 419) {
|
||||
Swal.fire({icon: 'warning', title: 'Sesi berakhir', text: 'Token CSRF kedaluwarsa. Halaman akan dimuat ulang untuk token baru.', confirmButtonText: 'Muat ulang'}).then(() => window.location.reload());
|
||||
return;
|
||||
}
|
||||
Swal.fire({icon: 'error', title: 'Gagal memperbarui tarif', text: xhr.responseJSON?.message || 'Silakan periksa kembali data tarif.'});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user