feat(permohonan): tambahkan relasi laporanExternal dan perbarui query show

- Menambahkan method laporanExternal pada model Permohonan untuk mendefinisikan relasi dengan LaporanExternal.
- Memperbarui query pada method show di PenilaiController untuk menyertakan relasi jenisPenilaian dan laporanExternal.
This commit is contained in:
Daeng Deni Mardaeni
2025-03-10 10:37:19 +07:00
parent 18b1e37cee
commit de6e7ad732
3 changed files with 82 additions and 40 deletions

View File

@@ -305,7 +305,7 @@ class PenilaiController extends Controller
*/ */
public function show($id) public function show($id)
{ {
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian', 'documents.inspeksi'])->find($id); $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian', 'documents.inspeksi','jenisPenilaian','laporanExternal'])->find($id);
// return response()->json(['permohonan' => $permohonan]); // return response()->json(['permohonan' => $permohonan]);

View File

@@ -235,4 +235,9 @@
{ {
return $this->hasMany(LampiranDokumen::class); return $this->hasMany(LampiranDokumen::class);
} }
public function laporanExternal()
{
return $this->belongsTo(LaporanExternal::class,'id','permohonan_id');
}
} }

View File

@@ -85,7 +85,6 @@
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
@@ -224,7 +223,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 "> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
<div class="flex gap-5"> <div class="flex gap-5">
<a class="btn btn-primary" <a class="btn btn-primary"
href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $dokumen->jenis_jaminan_id }}"> href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $dokumen->jenis_jaminan_id }}">
Lampiran Foto dan Dokumen Lampiran Foto dan Dokumen
</a> </a>
@if (strtolower($permohonan->tujuanPenilaian->name) != 'rap') @if (strtolower($permohonan->tujuanPenilaian->name) != 'rap')
@@ -233,7 +232,7 @@
</a> </a>
@endif @endif
<a class="btn btn-primary" <a class="btn btn-primary"
onclick="paparan({{ $permohonan->id }}, {{ $dokumen->id }}, {{ $inspeksiId }}, {{ $dokumen->jenis_jaminan_id }})"> onclick="paparan({{ $permohonan->id }}, {{ $dokumen->id }}, {{ $inspeksiId }}, {{ $dokumen->jenis_jaminan_id }})">
Paparan Paparan
</a> </a>
@@ -248,7 +247,7 @@
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap') @if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="rap('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})"> onclick="rap('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-message-programming"> <i class="ki-outline ki-message-programming">
</i> </i>
@@ -264,7 +263,7 @@
{{-- existing di --}} {{-- existing di --}}
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="memo('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})"> onclick="memo('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-badge"> <i class="ki-outline ki-badge">
</i> </i>
@@ -278,7 +277,7 @@
@if ($permohonan->status_bayar === 'belum_bayar') @if ($permohonan->status_bayar === 'belum_bayar')
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="resume('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})"> onclick="resume('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-profile-circle"> <i class="ki-outline ki-profile-circle">
</i> </i>
@@ -294,7 +293,7 @@
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="seletSederhanaStandart('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, '{{ $permohonan->jenisFasilitasKredit->name }}', '{{ $permohonan->status_bayar }}')"> onclick="seletSederhanaStandart('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, '{{ $permohonan->jenisFasilitasKredit->name }}', '{{ $permohonan->status_bayar }}')">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-setting-2"></i> <i class="ki-outline ki-setting-2"></i>
</span> </span>
@@ -304,7 +303,7 @@
@endif @endif
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})"> onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon"> <span class="menu-icon">
<i class="ki-outline ki-profile-circle"> <i class="ki-outline ki-profile-circle">
</i> </i>
@@ -323,23 +322,62 @@
</div> </div>
</div> </div>
</div> </div>
@if($permohonan->jenisPenilaian->name=="External")
@if(isset($permohonan->laporanExternal->file_resume) || isset($permohonan->laporanExternal->file_laporan))
<div class="dropdown" data-dropdown="true" data-dropdown-trigger="click">
<button class="dropdown-toggle btn btn-primary">
Laporan External
</button>
<div class="dropdown-content w-full max-w-56 py-2 !ml-[200px] !mt-[-20px]">
<div class="menu menu-default flex flex-col w-full">
@if(isset($permohonan->laporanExternal->file_resume) && !empty($permohonan->laporanExternal->file_resume))
<div class="menu-item">
<a class="menu-link" onclick="viewPDF('{{ Storage::url($permohonan->laporanExternal->file_resume) }}')">
<span class="menu-icon">
<i class="ki-outline ki-badge"></i>
</span>
<span class="menu-title">
Resume
</span>
</a>
</div>
@endif
@if(isset($permohonan->laporanExternal->file_laporan) && !empty($permohonan->laporanExternal->file_laporan))
<div class="menu-item">
<a class="menu-link" onclick="viewPDF('{{ Storage::url($permohonan->laporanExternal->file_laporan) }}')">
<span class="menu-icon">
<i class="ki-outline ki-setting-2"></i>
</span>
<span class="menu-title">
Laporan
</span>
</a>
</div>
@endif
</div>
</div>
</div>
@endif
@endif
</div> </div>
<div class="flex justify-end gap-5"> <div class="flex justify-end gap-5">
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => $dokumen->id, 'jenis_jaminan_id' => $dokumen->jenis_jaminan_id]) }}" <a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => $dokumen->id, 'jenis_jaminan_id' => $dokumen->jenis_jaminan_id]) }}"
class="btn btn-light"> class="btn btn-light">
<i class="ki-filled ki-printer"></i> Cetak Hasil Inspeksi <i class="ki-filled ki-printer"></i> Cetak Hasil Inspeksi
</a> </a>
<a class="btn btn-outline btn-info " <a class="btn btn-outline btn-info "
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )"> onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )">
<i class="ki-filled ki-eye"></i> <i class="ki-filled ki-eye"></i>
Lihat Laporan Lihat Laporan
</a> </a>
<a class="btn btn-success" <a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 0 )"> onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 0 )">
<i class="ki-filled ki-printer"></i> <i class="ki-filled ki-printer"></i>
Cetak Laporan Cetak Laporan
</a> </a>
@@ -354,16 +392,14 @@
</a> </a>
<a class="btn btn-warning" <a class="btn btn-warning"
{{ $permohonan->status == 'proses-paparan' || $permohonan->status == 'proses-laporan' ? 'disabled' : '' }} {{ $permohonan->status == 'proses-paparan' || $permohonan->status == 'proses-laporan' ? 'disabled' : '' }}
onclick="revisiSurveyor('{{ $permohonan->id }}', '{{ $permohonan->debiture->name }}', '{{ $permohonan->nomor_registrasi }}')"> onclick="revisiSurveyor('{{ $permohonan->id }}', '{{ $permohonan->debiture->name }}', '{{ $permohonan->nomor_registrasi }}')">
<i class="ki-filled ki-arrow-circle-right"></i> <i class="ki-filled ki-arrow-circle-right"></i>
REVISI REVISI
</a> </a>
</div> </div>
</div> </div>
@@ -412,13 +448,14 @@
<div class="flex justify-center items-center gap-2"> <div class="flex justify-center items-center gap-2">
<input type="file" id="kertas_kerja" class="file-input"> <input type="file" id="kertas_kerja" class="file-input">
<button type="button" class="btn btn-outline btn-success" <button type="button" class="btn btn-outline btn-success"
onclick="uploadKertasKerja({{ $permohonan->id }}, '{{ $documentId }}', '{{ $inspeksiId }}', '{{ $jenisJaminanId }}')">Upload</button> onclick="uploadKertasKerja({{ $permohonan->id }}, '{{ $documentId }}', '{{ $inspeksiId }}', '{{ $jenisJaminanId }}')">Upload
</button>
</div> </div>
</div> </div>
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
@if (isset($permohonan->penilai) && isset($permohonan->penilai->kertas_kerja) && $permohonan->penilai->kertas_kerja) @if (isset($permohonan->penilai) && isset($permohonan->penilai->kertas_kerja) && $permohonan->penilai->kertas_kerja)
<span data-modal-dismiss="true" class="btn btn-warning btn-outline" <span data-modal-dismiss="true" class="btn btn-warning btn-outline"
onclick="viewPDF('{{ Storage::url($permohonan->penilai->kertas_kerja) }}')"><i onclick="viewPDF('{{ Storage::url($permohonan->penilai->kertas_kerja) }}')"><i
class="ki-filled ki-eye mr-2"></i>Lihat Kertas Kerja</span> class="ki-filled ki-eye mr-2"></i>Lihat Kertas Kerja</span>
@endif @endif
</div> </div>
@@ -448,8 +485,8 @@
} else { } else {
fetch( fetch(
`{{ url('/penilai/check-status-lpj') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}` `{{ url('/penilai/check-status-lpj') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
) )
.then(response => response.json()) .then(response => response.json())
.then(data => { .then(data => {
if (data.status) { if (data.status) {
@@ -505,18 +542,18 @@
function saveStatusLpj(permohonanId, documentId, inspeksiId, type, jaminanId) { function saveStatusLpj(permohonanId, documentId, inspeksiId, type, jaminanId) {
fetch(`{{ url('/penilai/save-status-lpj') }}`, { fetch(`{{ url('/penilai/save-status-lpj') }}`, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'X-CSRF-TOKEN': '{{ csrf_token() }}', 'X-CSRF-TOKEN': '{{ csrf_token() }}',
}, },
body: JSON.stringify({ body: JSON.stringify({
permohonan_id: permohonanId, permohonan_id: permohonanId,
document_id: documentId, document_id: documentId,
inspeksi_id: inspeksiId, inspeksi_id: inspeksiId,
type: type, type: type,
}), }),
}).then(response => response.json()) }).then(response => response.json())
.then(data => { .then(data => {
if (data.success) { if (data.success) {
if (type === 'standard') { if (type === 'standard') {
@@ -552,12 +589,12 @@
formData.append('kertas_kerja', kertasKerja); formData.append('kertas_kerja', kertasKerja);
fetch(`{{ url('/penilai/import/kertas-kerja') }}`, { fetch(`{{ url('/penilai/import/kertas-kerja') }}`, {
method: 'POST', method: 'POST',
headers: { headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}', 'X-CSRF-TOKEN': '{{ csrf_token() }}',
}, },
body: formData, body: formData,
}) })
.then(response => response.json()) // Pastikan respons diurai menjadi JSON .then(response => response.json()) // Pastikan respons diurai menjadi JSON
.then(data => { .then(data => {
if (data.success) { if (data.success) {
@@ -641,7 +678,7 @@
headers: { headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}' 'X-CSRF-TOKEN': '{{ csrf_token() }}'
}, },
success: function(response) { success: function (response) {
if (response.success) { if (response.success) {
// window.location.reload(); // window.location.reload();
hideLoadingSwal(); hideLoadingSwal();
@@ -651,7 +688,7 @@
Swal.fire('Perhatian!', response.message, 'warning'); Swal.fire('Perhatian!', response.message, 'warning');
} }
}, },
error: function(xhr, status, error) { error: function (xhr, status, error) {
console.log('Error checking button status:', error, status, xhr); console.log('Error checking button status:', error, status, xhr);
if (xhr.responseJSON.message) { if (xhr.responseJSON.message) {
// window.location.reload(); // window.location.reload();