fix(debitur): perbaikan logika akses dan tampilan pada halaman debitur
- Menambahkan relasi 'permohonan' pada query data debitur. - Memperbaiki akses ke nomor registrasi pada dokumen jaminan. - Mengatur tampilan tombol 'Tambah Debitur' berdasarkan peran pengguna. - Menambahkan logika untuk memeriksa peran dan status permohonan sebelum menampilkan tombol aksi.
This commit is contained in:
@@ -20,7 +20,9 @@
|
||||
<div class="flex flex-wrap gap-2.5">
|
||||
<div class="h-[24px] border border-r-gray-200"></div>
|
||||
<a class="btn btn-sm btn-light" href="{{ route('debitur.export') }}"> Export to Excel </a>
|
||||
<a class="btn btn-sm btn-primary" href="{{ route('debitur.create') }}"> Tambah Debitur </a>
|
||||
@if(auth()->user()->hasAnyRole(['administrator', 'pemohon-ao']))
|
||||
<a class="btn btn-sm btn-primary" href="{{ route('debitur.create') }}"> Tambah Debitur </a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -90,6 +92,10 @@
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
const userRoles = @json(auth()->user()->roles->pluck('name'));
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
window.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -118,8 +124,7 @@
|
||||
window.location.reload();
|
||||
});
|
||||
}).catch((error) => {
|
||||
console.error('Error:', error);
|
||||
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
|
||||
Swal.fire('Error!', error.responseJSON.message, 'error');
|
||||
});
|
||||
}
|
||||
})
|
||||
@@ -177,14 +182,36 @@
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
return `<div class="flex flex-nowrap justify-center">
|
||||
let actionHtml = `<div class="flex flex-nowrap justify-center">`;
|
||||
|
||||
// Fungsi helper untuk memeriksa peran
|
||||
const hasRole = (roles) => roles.some(role => userRoles.includes(role));
|
||||
|
||||
// Fungsi helper untuk memeriksa status permohonan
|
||||
const hasValidStatus = (permohonan) => ['order', 'revisi'].includes(permohonan.status);
|
||||
|
||||
// Periksa apakah permohonan ada dan merupakan array
|
||||
const permohonanArray = Array.isArray(data.permohonan) ? data.permohonan : [];
|
||||
|
||||
// Periksa apakah ada setidaknya satu permohonan dengan status yang valid
|
||||
const hasAnyValidPermohonan = permohonanArray.some(hasValidStatus);
|
||||
|
||||
if (hasRole(['administrator']) && hasAnyValidPermohonan || data.permohonan.length < 1) {
|
||||
actionHtml += `
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-info" href="/debitur/${data.id}/edit">
|
||||
<i class="ki-outline ki-notepad-edit"></i>
|
||||
</a>
|
||||
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</a>
|
||||
</div>`;
|
||||
</a>`;
|
||||
}
|
||||
|
||||
if (hasRole(['administrator']) && data.permohonan.length < 1) {
|
||||
actionHtml += `
|
||||
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</a>`;
|
||||
}
|
||||
|
||||
actionHtml += `</div>`;
|
||||
return actionHtml;
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user