function addKlasifikasi(){ new bootstrap.Modal(modalKlasifikasiMenu).show(); formKlasifikasiMenu.attr('action', `/dashboard/klasifikasi-menu`) } formKlasifikasiMenu.on('submit', function(e){ e.preventDefault(); const form = this; const actionUrl = formKlasifikasiMenu.attr('action'); const formData = new FormData(form); fetch(actionUrl, { method: 'POST', headers: { 'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value, }, body: formData }).then(async(res) => { const responseData = await res.json(); if (res.status === 422) { // Tampilkan semua error ke swal const errors = responseData.errors || {}; let htmlList = ''; Swal.fire({ icon: 'error', title: 'Validasi Gagal', html: htmlList, }); throw new Error(); // Supaya masuk ke catch, tapi tidak tampil swal lagi } if (responseData.status) { const handler = function () { Swal.fire({ icon: 'success', title: 'Berhasil', text: responseData.message || 'Berhasil melakukan aksi!', timer: 2000, showConfirmButton: false, backdrop: true, }); $("#col_add_klasifikasi").html(''); colCount = 0; // reset counter formKlasifikasiMenu[0].reset(); datatableKlasifikasiMenu.bootstrapTable('refresh'); modalKlasifikasiMenu.removeEventListener('hidden.bs.modal', handler); }; modalKlasifikasiMenu.addEventListener('hidden.bs.modal', handler); bootstrap.Modal.getInstance(modalKlasifikasiMenu).hide(); } else { throw new Error(responseData.message || 'Terjadi kesalahan saat menyimpan data.'); } }).catch(err => { if (err.message) { Swal.fire({ icon: 'error', title: 'Gagal', text: err.message }); } }); }); function editKlasifikasi(e){ const data = $(e).data(); new bootstrap.Modal(modalKlasifikasiMenuEdit).show(); formKlasifikasiMenuEdit.attr('action', `/dashboard/klasifikasi-menu/${data?.kategori_diet_id}`) $("#nama_kategori_diet").val(data.nama) } formKlasifikasiMenuEdit.on('submit', function(e){ e.preventDefault(); const form = this; const actionUrl = formKlasifikasiMenuEdit.attr('action'); const formData = new FormData(form); formData.append('_method', 'PUT') fetch(actionUrl, { method: 'POST', headers: { 'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value, }, body: formData }).then(async(res) => { const responseData = await res.json(); if (res.status === 422) { // Tampilkan semua error ke swal const errors = responseData.errors || {}; Swal.fire({ icon: 'error', title: 'Validasi Gagal', html: errors.nama_kategori_diet[0], }); throw new Error(); // Supaya masuk ke catch, tapi tidak tampil swal lagi } if (responseData.status) { const handler = function () { Swal.fire({ icon: 'success', title: 'Berhasil', text: responseData.message || 'Berhasil melakukan aksi!', timer: 2000, showConfirmButton: false, backdrop: true, }); $("#nama_kategori_diet").val(''); colCount = 0; // reset counter formKlasifikasiMenuEdit[0].reset(); datatableKlasifikasiMenu.bootstrapTable('refresh'); modalKlasifikasiMenuEdit.removeEventListener('hidden.bs.modal', handler); }; modalKlasifikasiMenuEdit.addEventListener('hidden.bs.modal', handler); bootstrap.Modal.getInstance(modalKlasifikasiMenuEdit).hide(); } else { throw new Error(responseData.message || 'Terjadi kesalahan saat menyimpan data.'); } }).catch(err => { if (err.message) { Swal.fire({ icon: 'error', title: 'Gagal', text: err.message }); } }); }); function deleteKlasifikasi(e){ let id =$(e).data('kategori_diet_id') Swal.fire({ title: "Apakah kamu yakin ingin menghapus data ini?", text : $(e).data('nama'), icon: "warning", showCancelButton: true, backdrop: true, }).then((result) => { if(result.isConfirmed){ fetch(`/dashboard/klasifikasi-menu/${id}`, { method:'DELETE', headers: { "X-CSRF-TOKEN": document.querySelector('input[name="_token"]').value, "Content-Type": "application/json" } }).then((response) => { if(!response.ok){ throw new Error("Network response was not ok"); } return response.json(); }) .then((data) => { if(data.status){ Swal.fire({ title: "Success", text: "Data berhasil dihapus", icon:"success", showConfirmButton: false, timer: 1000 }).then(() => { datatableKlasifikasiMenu.bootstrapTable("refresh") }) }else{ Swal.fire({ title: "Error!", text: data.message || "Failed to delete Item.", icon: "error" }); } }) .catch(error => { Swal.fire({ title: "Error!", text: "Something went wrong. Please try again later.", icon: "error" }); }); } }) }