🐛 fix(lpj-views): Amankan akses penilai dan sederhanakan informasi analisa
- Laporan index: gunakan optional chaining untuk akses aman properti penilai - Ubah if (data.penilai.resume) menjadi if (data.penilai?.resume) agar tidak error saat penilai null/undefined. - Perkuat kondisi pemanggilan generateLaporanButton(...) dengan ekspresi: data.penilai?.type_penilai == 'resume' && !data.penilai?.resume ? type : typePenilaian . - Efek: mencegah runtime error (TypeError) saat data belum lengkap, memastikan tombol "Resume" dan "Laporan" hanya muncul pada kondisi valid. - Berlaku pada role pemohon-ao dan role lainnya (dua blok kondisi kini seragam dan aman). - Analisa penilai: sederhanakan tampilan dengan menghapus blok keterangan fakta - Hapus tabel "Catatan yang Perlu Diperhatikan" yang merender $forminspeksi['fakta']['keterangan'] (string/array). - Alasan: menghindari duplikasi, ketidakpastian tipe (string/array), dan potensi inkonsistensi formatting; konten penting tetap tersedia di bagian lain laporan. Komentar level fungsi (referensi terkait): - generateLaporanButton(data, dokumenID, inspeksiId, jenisJaminanID, typeOrResume, typePenilaian) - Peran: merender tombol "Laporan" berdasarkan status pembayaran dan kondisi penilai. - Perubahan: tidak mengubah implementasi fungsi; memperkuat logika pemanggilan via optional chaining agar parameter typeOrResume ditentukan aman.
This commit is contained in:
@@ -239,7 +239,7 @@
|
||||
let resumeButton = '';
|
||||
let penyelesaian = '';
|
||||
|
||||
if (data.penilai.resume) {
|
||||
if (data.penilai?.resume) {
|
||||
resumeButton = `
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0" class="btn btn-sm btn-success">
|
||||
Resume
|
||||
@@ -257,14 +257,14 @@
|
||||
} else if ((data.status_bayar == "sudah_bayar" || data.status_bayar == "tidak_bayar") &&
|
||||
data.nilai_liquidasi > 0) {
|
||||
laporanButton = generateLaporanButton(data, dokumenID, inspeksiId, jenisJaminanID,
|
||||
data.penilai.type_penilai == 'resume' && !data.penilai.resume ? type :
|
||||
data.penilai?.type_penilai == 'resume' && !data.penilai?.resume ? type :
|
||||
typePenilaian);
|
||||
}
|
||||
@else
|
||||
// Logika untuk role selain pemohon-ao
|
||||
if (data.status_bayar == "sudah_bayar" || data.status_bayar == "tidak_bayar") {
|
||||
laporanButton = generateLaporanButton(data, dokumenID, inspeksiId, jenisJaminanID,
|
||||
data.penilai.type_penilai == 'resume' && !data.penilai.resume ? type :
|
||||
data.penilai?.type_penilai == 'resume' && !data.penilai?.resume ? type :
|
||||
typePenilaian);
|
||||
}
|
||||
@endif
|
||||
|
||||
@@ -85,29 +85,6 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['keterangan']))
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Catatan yang Perlu
|
||||
Diperhatikan</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@php
|
||||
$keterangan = $forminspeksi['fakta']['keterangan'] ?? '';
|
||||
if (is_array($keterangan)) {
|
||||
$keterangan = implode(', ', array_filter($keterangan));
|
||||
}
|
||||
@endphp
|
||||
|
||||
@if (!empty($keterangan))
|
||||
<table style="width: 100%; border-collapse: collapse;">
|
||||
<tr>
|
||||
<td>{!! nl2br(e($keterangan)) !!}</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user