From 73d76a000de360540f0c0c21bad1d35baea7e247 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 5 Mar 2025 16:25:43 +0700 Subject: [PATCH 01/18] fix(dokumen): perbaikan pengambilan detail dokumen jaminan - Memperbaiki pengambilan data `details` pada `DokumenJaminanController`. - Mengubah indeks pengambilan `custom_field` dari `$value` menjadi `$key`. - Memperbaiki tampilan detail dokumen jaminan di view `jaminan.blade.php`. - Menambahkan penanganan untuk menampilkan nomor dokumen dan detail yang sesuai. --- .../Controllers/DokumenJaminanController.php | 2 +- .../debitur/components/dokumen.blade.php | 173 +++++++++++------- .../debitur/components/jaminan.blade.php | 67 ++++--- 3 files changed, 145 insertions(+), 97 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index cdfaa22..a64cef0 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -89,7 +89,7 @@ 'jenis_legalitas_jaminan_id' => $value, 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : '' + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '' ]; $dokumenJaminan = []; diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 9d3b3da..1d5980d 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -273,50 +273,52 @@ - -
- -
-
-
- - - -
-
-
- - @if(isset($detail->dokumen_jaminan)) - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp -
- @foreach($dokumen_jaminan as $index => $dokumen) -
- @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - -
- @endforeach +
+
+ +
+
+
+ + +
+
+
+ + @if(isset($detail->dokumen_jaminan)) + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+ @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + +
+ @endforeach +
+ @endif @endif - @endif +
+
@if($detail->details) @if($detail->jenisLegalitasJaminan->custom_fields) @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
+
@php $customField = getCustomField($key); $fieldValue = json_decode($detail->details)->{$customField->name} ?? ''; @@ -591,33 +593,36 @@
- -
- -
-
- ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} -
-
- - - +
+
+ +
+
+ ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} +
+
+ + + +
-
- ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` -
- -
- ${getCustomFieldInput(field.type, field.name, item.details, item.jenis_legalitas_jaminan_id)} + ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` +
+ +
+ ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} +
+ `).join('') : ""} + +
- `).join('') : ""}
-
-
-
- @if(isset($detail->details)) - @if(json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) -
- - {{ str_replace("_"," ",$key) ?? "" }} - -

- {{ $value ?? "" }} -

-
-
-
- @endforeach - @endif + @endforeach @endif +
keterangan From 03d28479c430799aafb51ef4ed68230678d099dc Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 7 Mar 2025 16:50:09 +0700 Subject: [PATCH 02/18] fix(dokumen_jaminan): perbaiki pengambilan data detail dokumen - Memperbaiki logika pengambilan data 'details' pada Dokumen Jaminan. - Mengubah cara pengolahan data luas tanah dan luas bangunan untuk akurasi. - Memperbaiki tampilan data pada email dan komponen jaminan. --- .../Controllers/DokumenJaminanController.php | 2 +- .../views/component/detail-jaminan.blade.php | 179 +++++++++--------- .../debitur/components/dokumen.blade.php | 174 ++++++++++------- .../debitur/components/jaminan.blade.php | 68 ++++--- .../views/penawaran/kirimEmail.blade.php | 62 +++--- 5 files changed, 271 insertions(+), 214 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 04feb22..b552df1 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -90,7 +90,7 @@ 'jenis_legalitas_jaminan_id' => $value, 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : '' + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '' ]; $dokumenJaminan = []; diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index edba9aa..3c5b231 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -68,36 +68,36 @@ {{ $penawaran->tujuanPenilaianKjpp->name }}
- @else + @else -
-

- Tujan Permohonan: -

- +
+

+ Tujan Permohonan: +

+ {{ $permohonan->tujuanPenilaian->name }} -
+
-
-

- Nilai Plafond: -

- +
+

+ Nilai Plafond: +

+ {{ $permohonan->nilaiPlafond->name }} -
+
-
-

- Status Bayar: -

- +
+

+ Status Bayar: +

+ {{ str_replace('_', ' ', $permohonan->status_bayar) }} -
- @endif +
+ @endif
@@ -263,84 +263,82 @@
@endif + +
Download Semua Dokumen - @foreach ($dokumen->detail as $detail) - - - - - @if(isset($detail->details)) - @if(json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - - - - - @endforeach - @endif - @endif - - - + + - @if (isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) - ? json_decode($detail->dokumen_jaminan) - : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) - ? json_decode($detail->dokumen_nomor) - : ($detail->dokumen_nomor - ? [$detail->dokumen_nomor] - : []); - @endphp - @foreach ($dokumen_jaminan as $index => $dokumen) -
- @if (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo'])) - @if (!empty($dokumen_nomor)) - Nomor Dokumen : - {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - - @endif - Preview -
-
- @endforeach + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp + @foreach($dokumen_jaminan as $index => $dokumen) + + + + - - - - - - + @if(isset($detail->details) && json_decode($detail->details)[$index]) + @foreach (json_decode($detail->details)[$index] as $key => $value) + + + + + @endforeach + @endif @endforeach + @endif + + + + + + @endforeach
- {{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - - {{ $detail->name ?? '' }} -
- {{formatLabel($key)}} - - {{ $value ?? "" }} -
- Dokumen Jaminan - + @php $document = $dokumen; @endphp + @foreach($document->detail as $detail) +
+ + {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} + +
+ + {{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }} + + + @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + + {{ basename($dokumen) }} + + @endif + + Preview + +
- Keterangan - - {{ $detail->keterangan ?? '' }} -
+ + - {{ str_replace("_"," ",$key) ?? "" }} + + +

+ {{ $value }} +

+
+ + - keterangan + + +

+ {{ $detail->keterangan }} +

+
@@ -349,6 +347,9 @@
@if (!isset($status)) + @include('lpj::component.history-permohonan') + + @endif @include('lpj::component.pdfviewer') diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 3f5fb73..bb5d62a 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -282,50 +282,52 @@ - -
- -
-
-
- - - -
-
-
- - @if(isset($detail->dokumen_jaminan)) - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp -
- @foreach($dokumen_jaminan as $index => $dokumen) -
- @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - -
- @endforeach +
+
+ +
+
+
+ + +
+
+
+ + @if(isset($detail->dokumen_jaminan)) + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+ @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + +
+ @endforeach +
+ @endif @endif - @endif +
+
@if($detail->details) @if($detail->jenisLegalitasJaminan->custom_fields) @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
+
@php $customField = getCustomField($key); $fieldValue = json_decode($detail->details)->{$customField->name} ?? ''; @@ -504,6 +506,7 @@
+ @push('scripts') {{--Pemilik Jaminan--}} diff --git a/resources/views/surveyor/components/print-out/print.blade.php b/resources/views/surveyor/components/print-out/print.blade.php deleted file mode 100644 index a246b27..0000000 --- a/resources/views/surveyor/components/print-out/print.blade.php +++ /dev/null @@ -1,704 +0,0 @@ - - - - - - - - - Laporan Penilai Jaminan - - - - -@php - $data = ''; - $dokument = null; - foreach ($permohonan->documents as $dokumen) { - $data .= $dokumen->jenisJaminan->name . ', '; - $dokument = $dokumen; - } - $data = rtrim($data, ', '); - - $senior_officer = null; - if ($permohonan->debiture && $permohonan->documents) { - foreach ($permohonan->documents as $dokumen) { - $penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first(); - $teams = $permohonan->region->teams; - - if ($teams) { - foreach ($teams as $team) { - $team_users = $team->teamsUsers; - // print_r($team_users); - if ($team_users) { - foreach ($team_users as $team_user) { - $user = $team_user->user; - - if ($user && $user->hasRole('senior-officer')) { - $senior_officer = $user; - break 3; - } - } - } - } - } - } - } -@endphp - - - - - - - - -
-

- Tujuan Penilaian -

-
- - - - - {{-- - - - - - - - --}} - - {{-- - - - - - - - - - - - - - - - - - - --}} - - - {{-- - - - --}} - - - - - - - - {{--
- - - - - - - - - - - - - - - - -
Cabang/Pemohon: - {{ $permohonan->debiture->branch->name ?? '' }} -
Tujuan Penilai: - {{ $permohonan->jenisFasilitasKredit->name ?? '' }}
Ao:{{ $permohonan->user->name ?? '' }}
-
- - - --}} - - -
- @if (isset($basicData['tujuanPenilaian'])) - - - @foreach ($basicData['tujuanPenilaian'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
- @endif - - - - - - - - - - - - - -
Permintaan (A/O. Tlp/Hp){{ $permohonan->user->name }}Tanggal{{ formatTanggalIndonesia($permohonan->created_at) }}
Nama Debitur/ Wakil Debitur{{ $permohonan->debiture->name ?? '' }} - @if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan'])) - @foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item) - {{ $item }} - @endforeach - @endif - Kunjungan Tanggal{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}
-
- - - {{--
- B - - IDENTITAS DEBITUR -
- - - - - - - -
Nama Debitur{{ $permohonan->debiture->name ?? '' }}
-
- C - - JENIS DAN LOKASI JAMINAN + KORDINAT -
- - @if (isset($basicData['jenisJaminan'])) - - - - @foreach ($basicData['jenisJaminan'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
- @endif - - - - - - - - - - - - - - - - - - - - - - -
Terletak di {{ $alamat['address'] ?? '' }}
Kelurahan{{ $alamat['village_code'] ?? '' }}
Kecamatan{{ $alamat['district_code'] ?? '' }}
Kotamadya {{ $alamat['city_code'] ?? '' }}
Propinsi{{ $alamat['province_code'] ?? '' }}
- - - - - -
Titik Kordinat{{ isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '' }} , - {{ isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '' }}
-
- D - - STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI -
- - - - @if (@isset($dokumen)) - @foreach ($dokumen->detail as $detail) - @if (isset($detail->dokumen_jaminan)) - - - - - - - @endif - - @if (isset($detail->details)) - @if (json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - @if (!is_null($value) && $value !== '') - - - - - @endif - @endforeach - @endif - @endif - @endforeach - @endif - - - - - - - - - @php - // Ambil nilai hub_cadeb langsung - $hubCadeb = isset($forminspeksi['asset']['hub_cadeb']) - ? $forminspeksi['asset']['hub_cadeb'] - : null; - - // Jika nilai adalah array dengan key 'sesuai', ambil nilainya - if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) { - $hubCadeb = $hubCadeb['sesuai']; - } - @endphp - - - - - - @php - $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) - ? 'sesuai' - : 'tidak sesuai'; - $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; - @endphp - - - - -
{{ $detail->name ?? '' }}
- @if (isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) - ? json_decode($detail->dokumen_jaminan) - : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) - ? json_decode($detail->dokumen_nomor) - : ($detail->dokumen_nomor - ? [$detail->dokumen_nomor] - : []); - @endphp - - @foreach ($dokumen_jaminan as $index => $dokumen) -
- @if (!empty($dokumen_nomor[$index])) - {{ $dokumen_nomor[$index] }} - @endif -
- @endforeach - @endif -
- {{ ucwords(str_replace('_', ' ', $key)) ?? '' }} - - {{ $value }} - @if ($key == 'luas_bangunan' || $key == 'luas_tanah') - m2 - @endif -
Atas Nama{{ $dokument->pemilik->name ?? '' }}
Hubungan Pemilik Jaminan dengan Debitur - - @if (isset($basicData['hubCadeb'])) - - @php $count = 0; @endphp - - @foreach ($basicData['hubCadeb'] as $item) - - @php $count++; @endphp - - @if ($count % 3 === 0) - - - @endif - @endforeach - - @if ($count % 3 !== 0) - @for ($i = 0; $i < 3 - ($count % 3); $i++) - - @endfor - @endif - -
- -
- @endif -
Hubungan Penghuni Jaminan dengan Debitur - @if (isset($selectedData)) - - - - -
- {{ $selectedData ?? '' }} -
- @endif -
-
- G - - ASURANSI -
- - - - - - - - - - -
- Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }} -
- TTD -
- - - @if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image'])) - @php - $imagePath = $forminspeksi['signature']['penilai']['image']; - - $isBase64 = str_starts_with($imagePath, 'data:image'); - - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } - - @endphp - - @endif - - @if (isset($forminspeksi['signature']['cabang'])) - @php - $imagePath = $forminspeksi['signature']['cabang']['image']; - - $isBase64 = str_starts_with($imagePath, 'data:image'); - - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } - - @endphp - - @endif - - - @if (isset($forminspeksi['signature']['debitur'])) - - @endif - - - @if (isset($forminspeksi['signature']['kjjp'])) - - @endif - - - - - @if (isset($forminspeksi['signature']['penilai']['name'])) - - @endif - @if (isset($forminspeksi['signature']['cabang']['name'])) - - @endif - @if (isset($forminspeksi['signature']['debitur']['name'])) - - @endif - @if (isset($forminspeksi['signature']['kjjp']['name'])) - - @endif - -
- - - - - Debitur/Perwakilan - - KJPP -
- {{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }} -
- {{ ucwords(strtolower('PENILAI')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }} -
- {{ ucwords(strtolower('CABANG')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }} -
- {{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['kjjp']['name'])) }} -
- {{ strtoupper('K.J.P.P') }} -
-
--}} - - -
- Cabang : {{ $permohonan->debiture->branch->name ?? '' }} -
- - - diff --git a/resources/views/surveyor/components/tanah.blade.php b/resources/views/surveyor/components/tanah.blade.php index 3e856f6..3c8391b 100644 --- a/resources/views/surveyor/components/tanah.blade.php +++ b/resources/views/surveyor/components/tanah.blade.php @@ -10,28 +10,22 @@
+ @if (isset($permohonan->documents)) @foreach ($permohonan->documents as $item) @php - $luas_tanah = 0; + $total_luas_tanah = 0; $jenis_legalitas_jaminan_id = 0; - if ($item->detail) { - foreach ($item->detail as $luas) { - if (isset($luas->name) && $luas->jenis_legalitas_jaminan_id === 1) { - $jenis_legalitas_jaminan_id = $luas->jenis_legalitas_jaminan_id; - $details = json_decode($luas->details, true); - $luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 0; - break; - } - } + if (isset($item->detail)) { + $total_luas_tanah = calculateTotalLuas($item->detail, 'luas_tanah', 1); } @endphp - - -

{{ $luas_tanah }} m2

+ + +

{{ $total_luas_tanah }} m2

@endforeach @endif
@@ -283,14 +277,14 @@ {{ old('tusuk_sate') == 'Ya' || (isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'checked' : '' }}> Ya - @php - $statusKey = isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'Ya' : 'Tidak'; - $selectedData = $forminspeksi['tanah']['tusuk_sate'][$statusKey] ?? null; - @endphp - + @php + $statusKey = isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'Ya' : 'Tidak'; + $selectedData = $forminspeksi['tanah']['tusuk_sate'][$statusKey] ?? null; + @endphp +
+ {{-- @if (strcasecmp($item->name, 'lainnya') == 0) --}} + + {{-- @endif --}}
diff --git a/resources/views/surveyor/components/informasi.blade.php b/resources/views/surveyor/components/informasi.blade.php index cfd19f4..fecaeb1 100644 --- a/resources/views/surveyor/components/informasi.blade.php +++ b/resources/views/surveyor/components/informasi.blade.php @@ -209,10 +209,10 @@
- @if (isset($link_url_region->regions->url)) +
@@ -226,19 +226,12 @@ alt="Foto Argis Region" class="mt-2 max-w-full h-auto" style="{{ isset($forminspeksi['foto_argis_region']) ? '' : 'display: none;' }} max-width: 30rem;">
- - - {{ $link_url_region->regions->name_url }} - + <
- @endif
- -
From 0976794aa2075a041e9e7030db47f04a402af7bb Mon Sep 17 00:00:00 2001 From: majid Date: Sat, 8 Mar 2025 03:36:34 +0700 Subject: [PATCH 08/18] fix(penilai): perbaikkan save penilai dan free text jenis asset lainnya --- app/Http/Controllers/PenilaiController.php | 17 +- app/Http/Controllers/SurveyorController.php | 1063 +---------------- app/Services/SaveFormInspesksiService.php | 1060 ++++++++++++++++ .../surveyor/components/header.blade.php | 37 +- .../components/print-out/main.blade.php | 223 ++-- 5 files changed, 1220 insertions(+), 1180 deletions(-) create mode 100644 app/Services/SaveFormInspesksiService.php diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 690e98a..a9d0cec 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -25,15 +25,19 @@ use App\Helpers\Lpj; use Modules\Lpj\Http\Requests\FormSurveyorRequest; use Modules\Lpj\Models\Authorization; use Modules\Lpj\Models\Debiture; +use Modules\Lpj\Services\SaveFormInspesksiService; class PenilaiController extends Controller { public $user; protected $surveyorController; + protected $inspeksiService; - public function __construct(SurveyorController $surveyorController) + + public function __construct(SurveyorController $surveyorController, SaveFormInspesksiService $inspeksiService) { $this->surveyorController = $surveyorController; + $this->inspeksiService = $inspeksiService; } /** @@ -108,7 +112,11 @@ class PenilaiController extends Controller if ($lpj) { $lpjData = json_decode($lpj->lpj, true); } + $debitur = Debiture::find($permohonan->debiture_id); + $provinceCode = $debitur->province_code; + $cityCode = $debitur->city_code; + $districtCode = $debitur->district_code; $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; if ($cekAlamat) { @@ -172,7 +180,11 @@ class PenilaiController extends Controller if ($lpj) { $lpjData = json_decode($lpj->lpj, true); } + $debitur = Debiture::find($permohonan->debiture_id); + $provinceCode = $debitur->province_code; + $cityCode = $debitur->city_code; + $districtCode = $debitur->district_code; $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; if ($cekAlamat) { @@ -1044,7 +1056,8 @@ class PenilaiController extends Controller DB::beginTransaction(); try { - $result = $this->surveyorController->store($request); + $validatedData = $request->all(); + $result = $this->inspeksiService->storeInspeksi($validatedData, $request->input('type'), $request); $data = [ diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 67e7e5b..86aab2c 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -83,15 +83,18 @@ use Modules\Lpj\Jobs\SendJadwalKunjunganEmailJob; use App\Helpers\Lpj; use Modules\Lpj\Models\Authorization; use Modules\Lpj\Services\SurveyorValidateService; +use Modules\Lpj\Services\SaveFormInspesksiService; class SurveyorController extends Controller { public $user; public $validateService; + public $inspeksiService; - public function __construct(SurveyorValidateService $validateService) + public function __construct(SurveyorValidateService $validateService, SaveFormInspesksiService $inspeksiService) { $this->validateService = $validateService; + $this->inspeksiService = $inspeksiService; } public function index() @@ -162,132 +165,15 @@ class SurveyorController extends Controller */ public function store(Request $request) { - try { - // Validate request data - $validatedData = $request->all(); + $validatedData = $request->all(); + $result = $this->inspeksiService->storeInspeksi($validatedData, $request->input('type'), $request); - - // Get action specific rules and process data - $processedData = $this->getActionSpecificRules( - $validatedData, - $request->input('type'), - $request - ); - - $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) - ->where('dokument_id', $request->input('dokument_id')) - ->first(); - - if ($inspeksi) { - // Jika data sudah ada, merge dengan data yang baru - $existingData = json_decode($inspeksi->data_form, true) ?: []; - - if (isset($existingData['signature']) && !isset($processedData['signature'])) { - $processedData['signature'] = $existingData['signature']; - } - - $mergedData = $this->arrayMergeRecursive($existingData, $processedData); - - // Update record - $inspeksi->update([ - 'data_form' => json_encode($mergedData), - 'name' => $request->input('type') - ]); - - $responseData = $mergedData; - } else { - // Jika belum ada data, buat record baru - $inspeksi = Inspeksi::create([ - 'permohonan_id' => $request->input('permohonan_id'), - 'dokument_id' => $request->input('dokument_id'), - 'data_form' => json_encode($processedData), - 'name' => $request->input('type') - ]); - - $responseData = $processedData; - } - - return response()->json([ - 'success' => true, - 'message' => 'Data berhasil disimpan', - 'data' => $processedData - ], 200); - - } catch (\Exception $e) { - return response()->json([ - 'success' => false, - 'message' => 'Gagal menyimpan data', - 'error' => $e->getMessage() - ], 500); + if ($result['success']) { + return response()->json($result, 200); } + return response()->json($result, 500); } - - private function getActionSpecificRules($data, $action, $request): array - { - $allowedActions = [ - 'apartemen-kantor' => 'getUnitData', - 'tanah' => 'getTanahData', - 'bangunan' => 'getBangunanData', - 'kapal' => 'getKapalData', - 'kendaraan' => 'getKendaraanData', - 'mesin' => 'getMesinData', - 'pesawat' => 'getPesawatData', - 'alat-berat' => 'getAlatBeratData', - 'lingkungan' => 'getLingkunganData', - 'fakta' => 'getFactData', - 'informasi' => 'getFactData', - 'rap' => 'getRapData', - ]; - - $rules = []; - $hasAssetDescriptionRules = false; - $hasFactaData = false; - - - - $pisah = array_filter( - explode(',', $action), - function ($act) use ($allowedActions) { - return isset($allowedActions[trim($act)]); - } - ); - - // dd($pisah); - - foreach ($pisah as $act) { - $act = trim($act); // Bersihkan spasi - if (isset($allowedActions[$act])) { - $method = $allowedActions[$act]; - - $actionRules = $this->$method($data, $request); - $rules = array_merge($rules, $actionRules); - - // Cek apakah act memerlukan asset description rules - if (in_array($act, ['apartemen-kantor', 'tanah', 'bangunan', 'rap'])) { - $hasAssetDescriptionRules = true; - } - - // Cek apakah act memerlukan fakta data - if (in_array($act, ['rap'])) { - $hasFactaData = true; - } - } - - } - - if ($hasAssetDescriptionRules) { - $rules = array_merge($rules, $this->getAssetData($data)); - } - - if ($hasFactaData) { - $rules = array_merge($rules, $this->getFactData($data, $request)); - } - - return $rules; - } - - public function storeDenah(Request $request) { $validator = $request->validate([ @@ -2423,870 +2309,6 @@ class SurveyorController extends Controller 'perizinan' => ['Perizinan', 'perizinan'], ]; - private function getAssetData(array $data): array - { - $alamatData = [ - 'address' => $data['address'] ?? null, - 'village_code' => $data['village_code'] ?? null, - 'district_code' => $data['district_code'] ?? null, - 'city_code' => $data['city_code'] ?? null, - 'province_code' => $data['province_code'] ?? null, - ]; - - $alamatKey = ($data['alamat_sesuai'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - $alamat = []; - - // Masukkan key baru yang sesuai - $alamat[$alamatKey] = $alamatData; - return [ - 'asset' => [ - 'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [], - 'jenis_asset' => [ - $data['jenis_asset'] ?? null => ($data['jenis_asset'] ?? null) === 'sesuai' - ? ($data['jenis_asset_name'] ?? null) - : ($data['jenis_asset_tidak_sesuai'] ?? null) - ], - 'alamat' => $alamat, - 'hub_cadeb' => [ - $data['hub_cadeb'] ?? null => ($data['hub_cadeb'] ?? null) === 'sesuai' - ? ($data['hub_cadeb_sesuai'] ?? null) - : ($data['hub_cadeb_tidak_sesuai'] ?? null) - ], - 'hub_cadeb_penghuni' => [ - $data['hub_cadeb_penghuni'] ?? null => ($data['hub_cadeb_penghuni'] ?? null) === 'sesuai' - ? ($data['hub_cadeb_penghuni_sesuai'] ?? null) - : ($data['hub_penghuni_tidak_sesuai'] ?? null) - ], - - 'pihak_bank' => $data['pihak_bank'] ?? null, - - 'kordinat_lng' => $data['kordinat_lng'] ?? null, - 'kordinat_lat' => $data['kordinat_lat'] ?? null, - // 'nomor_nib' => $data['nomor_nib'] ?? null - ] - ]; - } - - private function getTanahData(array $data): array - { - //luas tanah key - // Luas tanah key - $luas_tanah_key = ($data['luas_tanah'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - $luas_tanah = []; - $hasil_tanah = $luas_tanah_key === 'sesuai' - ? ($data['luas_tanah_sesuai'] ?? null) - : ($data['luas_tanah_tidak_sesuai'] ?? null); - $luas_tanah[$luas_tanah_key] = preg_replace('/[^0-9.,]/', '', $hasil_tanah); - - // Hadap mata angin key - $hadap_mata_angin_key = ($data['hadap_mata_angin'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - $hadap_mata_angin = []; - $hasil_hadap_mata_angin = $hadap_mata_angin_key === 'sesuai' - ? ($data['hadap_mata_angin_sesuai'] ?? null) - : ($data['hadap_mata_angin_tidak_sesuai'] ?? null); - $hadap_mata_angin[$hadap_mata_angin_key] = $hasil_hadap_mata_angin; - - $tusuk_sate_key = ($data['tusuk_sate'] ?? null) === 'Ya' ? 'Ya' : 'Tidak'; - - $tusuk_sate = []; - $tusuk_sate[$tusuk_sate_key] = $data['tusuk_sate_ya'] ?? null; - - - return [ - 'tanah' => [ - 'luas_tanah' => $luas_tanah, - 'hadap_mata_angin' => $hadap_mata_angin, - 'bentuk_tanah' => $this->getFieldData( - $data, - 'bentuk_tanah', - false, - 'lainnya' - ), - 'kontur_tanah' => $data['kontur_tanah'] ?? [], - 'ketinggian_tanah' => [ - 'ketinggian' => $data['ketinggian_jalan'] ?? null, - 'lebih_tinggi' => $data['ketinggian_lebih_tinggi'] ?? null, - 'lebih_rendah' => $data['ketinggian_lebih_rendah'] ?? null - ], - 'kontur_jalan' => $data['kontur_jalan'] ?? null, - 'ketinggian_jalan' => $data['ketinggian_jalan'] ?? [], - 'posisi_kavling' => $this->getFieldData( - $data, - 'posisi_kavling', - false, - 'lainnya' - ), - - 'tusuk_sate' => $tusuk_sate, - 'lockland' => $data['lockland'] ?? null, - 'kondisi_fisik_tanah' => $this->getFieldData( - $data, - 'kondisi_fisik_tanah', - false, - 'lainnya' - ) - ] - ]; - } - - - private function getBangunanData($data, $request): array - { - $data = $request->all(); - $result = []; - - - foreach ($request->input('nama_bangunan') as $index => $buildingName) { - if (empty($buildingName)) { - continue; - } // Skip if building name is empty - - $buildingData = []; - $buildingData['bagunan'] = $buildingName; - - $specCategories = $request->input('spek_kategori_bangunan'); - $buildingData['spek_kategori_bangunan'] = []; - - if (!empty($specCategories)) { - foreach ($specCategories as $category) { - if (empty($category)) { - continue; - } // Skip empty categories - - $specs = $request->input("spek_bangunan.{$index}.{$category}", []); - - // Only add category if it has specifications - if (!empty($specs)) { - $buildingData['spek_kategori_bangunan'][$category] = $specs; - } - } - } - - // Only add building data if it has specifications - if (!empty($buildingData['spek_kategori_bangunan'])) { - $result[] = $buildingData; - } - } - - - - $luas_tanah_bagunan_key = ($data['luas_tanah_bagunan'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - $luas_tanah_bagunan = []; - - $hasil_tanah_bagunan = $luas_tanah_bagunan_key === 'sesuai' - ? ($data['luas_bangunan_sesuai'] ?? null) - : ($data['luas_tanah_bagunan_tidak_sesuai'] ?? null); - - // Masukkan key baru yang sesuai - $luas_tanah_bagunan[$luas_tanah_bagunan_key] = preg_replace('/[^0-9.,]/', '', $hasil_tanah_bagunan); - - - return [ - 'bangunan' => [ - 'luas_tanah_bagunan' => $luas_tanah_bagunan, - 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, - 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, - 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, - 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, - 'spesifikasi_bangunan' => $result ?? null, - 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? null, - 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, - ], - ]; - } - - private function getLingkunganData($data, $request): array - { - return [ - 'lingkungan' => [ - 'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null, - 'jalan_linkungan' => $data['jalan_linkungan'] ?? null, - 'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null, - 'nama_cbd_point' => $data['nama_cbd_point'] ?? null, - 'lebar_perkerasan_jalan' => $data['lebar_perkerasan_jalan'] ?? null, - 'perkerasan_jalan' => $this->getFieldData( - $data, - 'perkerasan_jalan', - false, - 'lainnya' - ), - 'lalu_lintas' => $data['lalu_lintas'] ?? null, - 'gol_mas_sekitar' => $data['gol_mas_sekitar'] ?? null, - 'tingkat_keramaian' => $data['tingkat_keramaian'] ?? null, - 'terletak_diarea' => $this->getFieldData( - $data, - 'terletak_diarea', - false, - 'lainnya' - ), - 'disekitar_lokasi' => ($data['disekitar_lokasi'] ?? null) === 'yes' ? [ - 'kondisi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, - 'sifat' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, -] : ($data['disekitar_lokasi'] ?? null), - - 'kondisi_bagunan_disekitar_lokasi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, - 'sifat_bagunan_disekitar_lokasi' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, - 'dekat_makam' => $data['dekat_makam'] ?? null, - 'jarak_makam' => $data['jarak_makam'] ?? null, - 'nama_makam' => $data['nama_makam'] ?? null, - 'dekat_tps' => $data['dekat_tps'] ?? null, - 'jarak_tps' => $data['jarak_tps'] ?? null, - 'nama_tps' => $data['nama_tps'] ?? null, - 'dekat_lainnya' => $data['dekat_lainnya'] ?? null, - 'merupakan_daerah' => $data['merupakan_daerah'] ?? null, - 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null, - 'fasilitas_dekat_object_input' => $data['fasilitas_dekat_object_input'] ?? null, - ] - ]; - } - - private function getFactData($data, $request): array - { - $factData = [ - 'fakta' => [ - 'fakta_positif' => $data['fakta_positif'] ?? null, - 'fakta_negatif' => $data['fakta_negatif'] ?? null, - 'rute_menuju' => $data['rute_menuju'] ?? null, - 'batas_batas' => $data['batas_batas'] ?? null, - 'batas_batas_input' => $data['batas_batas_input'] ?? null, - 'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null, - 'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null, - 'informasi_dokument' => $data['informasi_dokument'] ?? null, - 'peruntukan' => $data['peruntukan'] ?? null, - 'kdb' => $data['kdb'] ?? null, - 'kdh' => $data['kdh'] ?? null, - 'gsb' => $data['gsb'] ?? null, - 'max_lantai' => $data['max_lantai'] ?? null, - 'klb' => $data['klb'] ?? null, - 'gss' => $data['gss'] ?? null, - 'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null, - 'nama_petugas' => $data['nama_petugas'] ?? null, - 'keterangan' => $data['keterangan'] ?? null, - ] - ]; - - - $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('dokument_id', $request->input('dokument_id'))->first(); - - - $fotoTypes = [ - 'foto_gistaru', - 'foto_bhumi', - 'foto_argis_region', - 'foto_tempat', - 'foto_sentuh_tanahku', - 'upload_gs' - ]; - - if ($inspeksi) { - $dataForm = json_decode($inspeksi->data_form, true); - foreach ($fotoTypes as $fotoType) { - // Jika ada file baru diupload - if ($request->hasFile($fotoType)) { - $factData[$fotoType] = $this->updateOrDeleteFile($dataForm, $request, $fotoType) ?: null; - } else { - $factData[$fotoType] = $dataForm[$fotoType] ?? null; - } - } - } else { - foreach ($fotoTypes as $fotoType) { - $factData[$fotoType] = $this->updateOrDeleteFile($data, $request, $fotoType) ?: null; - } - } - - return $factData; - } - - private function getRapData($data, $request): array - { - - $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) - ->where('dokument_id', $request->input('dokument_id')) - ->first(); - - $dataForm = json_decode($inspeksi->data_form, true); - - $perizinanData = isset($dataForm['perizinan']) ? $dataForm['perizinan'] : []; - - if ($request->has('perizinan')) { - foreach ($request->perizinan as $key => $perizinanName) { - // Cek apakah ada file baru yang diupload - if ($request->hasFile("perizinan_file.{$key}")) { - // Jika ada file baru, tambahkan/update data - $file = $request->file("perizinan_file.{$key}"); - $path = $file->store('perizinan', 'public'); - - // Cek apakah perizinan dengan nama yang sama sudah ada - $existingIndex = array_search($perizinanName, array_column($perizinanData, 'perizinan')); - - if ($existingIndex !== false) { - // Update file untuk perizinan yang sudah ada - $perizinanData[$existingIndex] = [ - 'perizinan' => $perizinanName, - 'perizinan_file' => $path - ]; - } else { - // Tambah perizinan baru - $perizinanData[] = [ - 'perizinan' => $perizinanName, - 'perizinan_file' => $path - ]; - } - } - } - } - - $data['perizinan'] = $perizinanData; - - - - $partisiResult = []; - if (isset($data['partisi'])) { - foreach ($data['partisi'] as $name => $values) { - if (!empty($values['value'])) { - $partisiResult[$name] = [ - 'nama' => $values['nama'], - 'value' => $values['value'] - ]; - } - } - } - - $brosurData = isset($dataForm['brosur_price_list']) ? $dataForm['brosur_price_list'] : []; - - if ($request->has('brosur_price_list')) { - foreach ($request->brosur_price_list as $key => $jenis) { - // Cek apakah ada file baru yang diupload - if ($request->hasFile("brosur_price_list_file.{$key}")) { - // Jika ada file baru, tambahkan/update data - $file = $request->file("brosur_price_list_file.{$key}"); - $path = $file->store('brosur-pricelist', 'public'); - - // Cek apakah jenis brosur yang sama sudah ada - $existingIndex = array_search($jenis, array_column($brosurData, 'jenis')); - - if ($existingIndex !== false) { - // Update file untuk jenis yang sudah ada - $brosurData[$existingIndex] = [ - 'jenis' => $jenis, - 'file_path' => $path - ]; - } else { - // Tambah jenis brosur baru - $brosurData[] = [ - 'jenis' => $jenis, - 'file_path' => $path - ]; - } - } - } - } - - $data['brosur_price_list'] = $brosurData; - $rapData = [ - 'perizinan' => $perizinanData ?? null, - 'brosur_price_list' => $brosurData ?? null, - - 'pengalaman_developer' => $data['pengalaman_developer'] ?? null, - 'developer_anggota' => $data['developer_anggota'] ?? null, - 'lainnya_developer' => $data['lainnya_developer'] ?? null, - 'kapan_mulai_dibangun' => $data['kapan_mulai_dibangun'] ?? null, - 'kondisi_perumahan' => $data['kondisi_perumahan'] ?? null, - 'progres_pembangunan' => $data['progres_pembangunan'] ?? null, - 'kontraktor' => $data['kontraktor'] ?? null, - 'lingkungan_sekitar' => $data['lingkungan_sekitar'] ?? null, - 'komplek_disekitar' => $data['komplek_disekitar'] ?? null, - 'pusat_keramaian' => $data['pusat_keramaian'] ?? null, - 'transportasi_umum' => $data['transportasi_umum'] ?? null, - 'lainnya_kondisi' => $data['lainnya_kondisi'] ?? null, - 'partisi' => $partisiResult ?? null, - 'jumlah_unit' => $data['jumlah_unit'] ?? null, - 'batas_batas_perumahan' => $data['batas_batas_perumahan'] ?? null, - 'fasus_fasum' => $data['fasus_fasum'] ?? null, - 'progres_penjualan' => $data['progres_penjualan'] ?? null, - 'harga_unit' => $data['harga_unit'] ?? null, - 'target_market' => $data['target_market'] ?? null, - 'kerjasama_dengan_bank' => $data['kerjasama_dengan_bank'] ?? null, - 'rute_menuju_lokasi' => $data['rute_menuju_lokasi'] ?? null, - 'properti_sejenis' => $data['properti_sejenis'] ?? null, - ]; - - return $rapData; - } - - private function updateOrDeleteFile($data, $request, $fileKey) - { - if ($request->hasFile($fileKey)) { - $file = $request->file($fileKey); - if ($file->isValid()) { - $fileName = time() . '_' . $file->getClientOriginalName(); - $path = $file->storeAs("public/surveyor/{$request->type}", $fileName); - - if ($path === false) { - throw new Exception("Failed to store file for {$fileKey}"); - } - if (isset($data[$fileKey]) && $data[$fileKey]) { - $this->deleteFile($data[$fileKey]); - } - return str_replace('public/', '', $path); - } else { - throw new Exception("Invalid file upload for {$fileKey}"); - } - } elseif (isset($data[$fileKey]) && $data[$fileKey]) { - return $data[$fileKey]; - } else { - return null; - } - } - - private function deleteFile($filePath) - { - $fullPath = storage_path('app/public/' . $filePath); - if (file_exists($fullPath)) { - unlink($fullPath); - } - } - - - private function getKapalData($data, $request): array - { - - $alamatData = [ - 'village_code' => $data['village_code'] ?? null, - 'district_code' => $data['district_code'] ?? null, - 'city_code' => $data['city_code'] ?? null, - 'province_code' => $data['province_code'] ?? null, - ]; - return [ - - 'action' => $data['action'] ?? null, - 'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null, - 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, - 'dermaga' => $data['dermaga'] ?? null, - 'nama_jalan' => $data['nama_jalan'] ?? null, - 'perumahan_gang' => $data['perumahan_gang'] ?? null, - 'blok_nomor' => $data['blok_nomor'] ?? null, - 'bandara' => $data['bandara'] ?? null, - 'alamat' => [ - 'sesuai' => $alamatData - ], - 'jenis_kapal' => $data['jenis_kapal'] ?? null, - 'jenis_kapal_lainnya' => $data['jenis_kapal_lainnya'] ?? null, - 'size' => $data['size'] ?? null, - 'kondisi' => $data['kondisi'] ?? null, - 'klasifikasi' => $data['klasifikasi'] ?? null, - - 'nama_kapal' => $data['nama_kapal'] ?? null, - 'pemilik_kapal' => $data['pemilik_kapal'] ?? null, - 'bendera' => $data['bendera'] ?? null, - 'nomor_selar' => $data['nomor_selar'] ?? null, - 'kapal' => $data['kapal'] ?? null, - 'galangan_kapal' => $data['galangan_kapal'] ?? null, - 'kapal_shipyard' => $data['kapal_shipyard'] ?? null, - 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, - 'tahun_launcing' => $data['tahun_launcing'] ?? null, - 'dwt' => $data['dwt'] ?? null, - 'lwt' => $data['lwt'] ?? null, - 'gross_tonnage' => $data['gross_tonnage'] ?? null, - 'net_tonnage' => $data['net_tonnage'] ?? null, - 'tenaga_mesin' => $data['tenaga_mesin'] ?? null, - 'loa' => $data['loa'] ?? null, - 'lbp' => $data['lbp'] ?? null, - 'beam' => $data['beam'] ?? null, - 'depth' => $data['depth'] ?? null, - 'draft' => $data['draft'] ?? null, - - - 'lambung_kapal' => $data['lambung_kapal'] ?? null, - 'dek' => $data['dek'] ?? null, - 'struktur_rangka' => $data['struktur_rangka'] ?? null, - 'palka' => $data['palka'] ?? null, - 'pondasi_mesin' => $data['pondasi_mesin'] ?? null, - 'area_mesin' => $data['area_mesin'] ?? null, - 'cat_dan_korosi' => $data['cat_dan_korosi'] ?? null, - 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, - 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, - - 'sekoci' => $data['sekoci'] ?? null, - 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, - 'alat_pemadaman' => $data['alat_pemadaman'] ?? null, - 'rambu_darurat' => $data['rambu_darurat'] ?? null, - 'sistem_alarm' => $data['sistem_alarm'] ?? null, - 'sistem_pencegah' => $data['sistem_pencegah'] ?? null, - 'kebakaran' => $data['kebakaran'] ?? null, - 'lampu_darurat' => $data['lampu_darurat'] ?? null, - 'deskripsi_peralatan' => $data['deskripsi_peralatan'] ?? null, - - 'gps' => $data['gps'] ?? null, - 'radar' => $data['radar'] ?? null, - 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, - 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, - 'sistem_kendali_otomatis' => $data['sistem_kendali_otomatis'] ?? null, - 'kompas' => $data['kompas'] ?? null, - 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, - - 'mesin_utama' => $data['mesin_utama'] ?? null, - 'mesin_bantu' => $data['mesin_bantu'] ?? null, - 'pompa_pendingin' => $data['pompa_pendingin'] ?? null, - 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, - 'propeller' => $data['propeller'] ?? null, - 'sistem_kelistrikan' => $data['sistem_kelistrikan'] ?? null, - 'deskripsi_mesin_penggerak' => $data['deskripsi_mesin_penggerak'] ?? null, - - 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, - 'sistem_penerangan' => $data['sistem_penerangan'] ?? null, - 'sistem_panel_distribusi' => $data['sistem_panel_distribusi'] ?? null, - 'kabel_perangkat' => $data['kabel_perangkat'] ?? null, - 'deskripsi_kelistrikan' => $data['deskripsi_kelistrikan'] ?? null, - - 'kebersihan_dek_luar' => $data['kebersihan_dek_luar'] ?? null, - 'tangki_limbah' => $data['tangki_limbah'] ?? null, - 'sistem_pengelolaan_limbah' => $data['sistem_pengelolaan_limbah'] ?? null, - 'pengelolaan_air_ballast' => $data['pengelolaan_air_ballast'] ?? null, - 'deskripsi_kebersihan' => $data['deskripsi_kebersihan'] ?? null, - - 'fakta_positif' => $data['fakta_positif'] ?? null, - 'fakta_negatif' => $data['fakta_negatif'] ?? null, - 'analisa_makro' => $data['analisa_makro'] ?? null, - 'kesimpulan' => $data['kesimpulan'] ?? null, - 'catatan' => $data['catatan'] ?? null, - - ]; - } - public function getKendaraanData($data, $request): array - { - $alamatData = [ - 'village_code' => $data['village_code'] ?? null, - 'district_code' => $data['district_code'] ?? null, - 'city_code' => $data['city_code'] ?? null, - 'province_code' => $data['province_code'] ?? null, - ]; - - return [ - 'action' => $data['action'] ?? null, - 'tanggal_survey' => $data['tanggal_survey'] ?? null, - 'nama_wakil' => $data['nama_wakil'] ?? null, - 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, - 'nama_jalan' => $data['nama_jalan'] ?? null, - 'perumahan_gang' => $data['perumahan_gang'] ?? null, - 'blok_nomor' => $data['blok_nomor'] ?? null, - 'alamat' => [ - 'sesuai' => $alamatData - ], - 'masa_stnk' => $data['masa_stnk'] ?? null, - 'masa_pajak' => $data['masa_pajak'] ?? null, - 'kendaraan' => $data['kendaraan'] ?? null, - 'kendaraan_input' => $data['kendaraan_input'] ?? null, - 'kondisi' => $data['kondisi'] ?? null, - - 'nomor_polisi' => $data['nomor_polisi'] ?? null, - 'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null, - 'merek' => $data['merek'] ?? null, - 'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null, - 'warna' => $data['warna'] ?? null, - 'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null, - 'nomor_rangka' => $data['nomor_rangka'] ?? null, - 'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null, - 'nomor_mesin' => $data['nomor_mesin'] ?? null, - 'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null, - 'posisi_kilometer' => $data['posisi_kilometer'] ?? null, - 'transmisi' => $data['transmisi'] ?? null, - 'transmisi_input' => $data['transmisi_input'] ?? null, - 'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null, - 'mesin_panel_instrument_input' => $data['mesin_panel_instrument_input'] ?? null, - 'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null, - 'fungsi_mesin_panel_instrument_input' => $data['fungsi_mesin_panel_instrument_input'] ?? null, - 'interior' => $data['interior'] ?? null, - 'interior_input' => $data['interior_input'] ?? null, - 'jumlah_pintu' => $data['jumlah_pintu'] ?? null, - 'jumlah_pintu_input' => $data['jumlah_pintu_input'] ?? null, - 'rangka_karoseri' => $data['rangka_karoseri'] ?? null, - 'rangka_karoseri_input' => $data['rangka_karoseri_input'] ?? null, - 'ban' => $data['ban'] ?? null, - 'ban_input' => $data['ban_input'] ?? null, - 'velg' => $data['velg'] ?? null, - 'velg_input' => $data['velg_input'] ?? null, - - - - 'bamper_depan' => $data['bamper_depan'] ?? null, - 'bamper_depan_input' => $data['bamper_depan_input'] ?? null, - 'bamper_belakang' => $data['bamper_belakang'] ?? null, - 'bamper_belakang_input' => $data['bamper_belakang_input'] ?? null, - 'lampu_depan' => $data['lampu_depan'] ?? null, - 'lampu_depan_input' => $data['lampu_depan_input'] ?? null, - 'lampu_belakang' => $data['lampu_belakang'] ?? null, - 'lampu_belakang_input' => $data['lampu_belakang_input'] ?? null, - 'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null, - 'kaca_kendaraan_input' => $data['kaca_kendaraan_input'] ?? null, - 'air_conditioner' => $data['air_conditioner'] ?? null, - 'air_conditioner_input' => $data['air_conditioner_input'] ?? null, - 'tape_radio_cd' => $data['tape_radio_cd'] ?? null, - 'tape_radio_cd_input' => $data['tape_radio_cd_input'] ?? null, - 'sensor_parkir' => $data['sensor_parkir'] ?? null, - 'sensor_parkir_input' => $data['sensor_parkir_input'] ?? null, - 'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null, - 'sensor_camera_recorder_input' => $data['sensor_camera_recorder_input'] ?? null, - 'lcd' => $data['lcd'] ?? null, - 'lcd_input' => $data['lcd_input'] ?? null, - 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, - 'sabuk_keselamatan_input' => $data['sabuk_keselamatan_input'] ?? null, - 'airbag' => $data['airbag'] ?? null, - 'airbag_input' => $data['airbag_input'] ?? null, - 'asuransi' => $data['asuransi'] ?? null, - 'asuransi_input' => $data['asuransi_input'] ?? null, - 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, - 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, - - - 'fakta_positif' => $data['fakta_positif'] ?? null, - 'fakta_negatif' => $data['fakta_negatif'] ?? null, - 'analisa_makro' => $data['analisa_makro'] ?? null, - 'kesimpulan' => $data['kesimpulan'] ?? null, - 'catatan' => $data['catatan'] ?? null, - ]; - } - - public function getMesinData($data, $request): array - { - return [ - 'action' => $data['action'] ?? null, - 'nama_wakil' => $data['nama_wakil'] ?? null, - 'nama_jalan' => $data['nama_jalan'] ?? null, - 'perumahan_gang' => $data['perumahan_gang'] ?? null, - 'blok' => $data['blok'] ?? null, - 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, - 'kecamatan' => $data['kecamatan'] ?? null, - 'kota_madya' => $data['kota_madya'] ?? null, - 'provinsi' => $data['provinsi'] ?? null, - 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, - 'tipe_model' => $data['tipe_model'] ?? null, - 'merek' => $data['merek'] ?? null, - 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, - 'negara_pembuat' => $data['negara_pembuat'] ?? null, - 'kondisi_mesin' => $data['kondisi_mesin'] ?? null, - 'faktor_positif' => $data['faktor_positif'] ?? null, - 'faktor_negatif' => $data['faktor_negatif'] ?? null, - 'kesimpulan' => $data['kesimpulan'] ?? null, - 'catatan' => $data['catatan'] ?? null, - ]; - } - - public function getAlatBeratData($data, $request): array - { - $alamatData = [ - 'village_code' => $data['village_code'] ?? null, - 'district_code' => $data['district_code'] ?? null, - 'city_code' => $data['city_code'] ?? null, - 'province_code' => $data['province_code'] ?? null, - ]; - - return [ - 'action' => $data['action'] ?? null, - 'tanggal_survey' => $data['tanggal_survey'] ?? null, - 'nama_wakil' => $data['nama_wakil'] ?? null, - 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, - 'dengan_wadeb' => $data['dengan_wadeb'] ?? null, - 'nama_jalan' => $data['nama_jalan'] ?? null, - 'perumahan_gang' => $data['perumahan_gang'] ?? null, - 'blok_nomor' => $data['blok_nomor'] ?? null, - 'alamat' => [ - 'sesuai' => $alamatData - ], - 'jenis_model' => $data['jenis_model'] ?? null, - 'nomor_lambung' => $data['nomor_lambung'] ?? null, - 'model_unit' => $data['model_unit'] ?? null, - 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, - 'merk' => $data['merk'] ?? null, - 'negara_pembuat' => $data['negara_pembuat'] ?? null, - 'tahun_pembelian' => $data['tahun_pembelian'] ?? null, - 'nomor_faktur' => $data['nomor_faktur'] ?? null, - 'nomor_kontrak' => $data['nomor_kontrak'] ?? null, - 'nama_pemilik' => $data['nama_pemilik'] ?? null, - 'alamat_pemilik' => $data['alamat_pemilik'] ?? null, - 'nomor_asuransi' => $data['nomor_asuransi'] ?? null, - 'nomor_rangka' => $data['nomor_rangka'] ?? null, - 'nomor_mesin' => $data['nomor_mesin'] ?? null, - 'hour_mesters' => $data['hour_mesters'] ?? null, - 'overhaul_mesin' => $data['overhaul_mesin'] ?? null, - - 'mesin_panel' => $data['mesin_panel'] ?? null, - 'mesin_panel_input' => $data['mesin_panel_input'] ?? null, - 'fungsi_panel' => $data['fungsi_panel'] ?? null, - 'fungsi_panel_input' => $data['fungsi_panel_input'] ?? null, - 'interior' => $data['interior'] ?? null, - 'interior_input' => $data['interior_input'] ?? null, - 'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null, - 'rangka_Karoseri_input' => $data['rangka_Karoseri_input'] ?? null, - 'ban' => $data['ban'] ?? null, - 'ban_input' => $data['ban_input'] ?? null, - 'velg' => $data['velg'] ?? null, - 'velg_input' => $data['velg_input'] ?? null, - 'air_conditioner' => $data['air_conditioner'] ?? null, - 'air_conditioner_input' => $data['air_conditioner_input'] ?? null, - 'aksesoris' => $data['aksesoris'] ?? null, - 'aksesoris_input' => $data['aksesoris_input'] ?? null, - 'lcd' => $data['lcd'] ?? null, - 'lcd_input' => $data['lcd_input'] ?? null, - 'perlengkapan' => $data['perlengkapan'] ?? null, - 'perlengkapan_input' => $data['perlengkapan_input'] ?? null, - 'asuransi' => $data['asuransi'] ?? null, - 'asuransi_input' => $data['asuransi_input'] ?? null, - 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, - 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, - 'sensor_kamera' => $data['sensor_kamera'] ?? null, - 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, - 'air_bag' => $data['air_bag'] ?? null, - - 'fakta_positif' => $data['fakta_positif'] ?? null, - 'fakta_negatif' => $data['fakta_negatif'] ?? null, - 'kesimpulan' => $data['kesimpulan'] ?? null, - 'catatan' => $data['catatan'] ?? null, - ]; - } - - private function getPesawatData($data, $request): array - { - $alamatData = [ - 'village_code' => $data['village_code'] ?? null, - 'district_code' => $data['district_code'] ?? null, - 'city_code' => $data['city_code'] ?? null, - 'province_code' => $data['province_code'] ?? null, - ]; - return [ - 'action' => $data['action'] ?? null, - 'tanggal_survey' => $data['tanggal_survey'] ?? null, - 'nama_wakil' => $data['nama_wakil'] ?? null, - 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, - 'nama_jalan' => $data['nama_jalan'] ?? null, - 'perumahan_gang' => $data['perumahan_gang'] ?? null, - 'blok_nomor' => $data['blok_nomor'] ?? null, - 'bandara' => $data['bandara'] ?? null, - 'alamat' => [ - 'sesuai' => $alamatData - ], - 'jenis_pesawat' => $data['jenis_pesawat'] ?? null, - 'jenis_pesawat_lainnya' => $data['jenis_pesawat_lainnya'] ?? null, - - 'size' => $data['size'] ?? null, - 'kondisi' => $data['kondisi'] ?? null, - 'nama_pesawat' => $data['nama_pesawat'] ?? null, - 'model' => $data['model'] ?? null, - 'nomor_registrasi' => $data['nomor_registrasi'] ?? null, - 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, - 'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null, - 'certificate_of_registration' => $data['certificate_of_registration'] ?? null, - 'total_service_hours' => $data['total_service_hours'] ?? null, - 'total_service_cycles' => $data['total_service_cycles'] ?? null, - - 'last_a_check' => $data['last_a_check'] ?? null, - 'next_a_check' => $data['next_a_check'] ?? null, - 'last_b_check' => $data['last_b_check'] ?? null, - 'next_b_check' => $data['next_b_check'] ?? null, - 'last_c_check' => $data['last_c_check'] ?? null, - 'next_c_check' => $data['next_c_check'] ?? null, - 'next_d_check' => $data['next_d_check'] ?? null, - 'last_d_check' => $data['last_d_check'] ?? null, - 'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null, - - 'instrument_landing_system' => $data['instrument_landing_system'] ?? null, - 'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null, - 'windshear' => $data['windshear'] ?? null, - 'electronic_flight' => $data['electronic_flight'] ?? null, - 'winglets' => $data['winglets'] ?? null, - 'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null, - - 'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null, - 'jumlah_kursi' => $data['jumlah_kursi'] ?? null, - 'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null, - 'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null, - 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, - 'lampu_kabin' => $data['lampu_kabin'] ?? null, - 'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null, - 'intercom_kabin' => $data['intercom_kabin'] ?? null, - 'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null, - - 'badan_pesawat' => $data['badan_pesawat'] ?? null, - 'sayap_pesawat' => $data['sayap_pesawat'] ?? null, - 'ekor_pesawat' => $data['ekor_pesawat'] ?? null, - 'landing_gear' => $data['landing_gear'] ?? null, - 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, - 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, - - 'gps' => $data['gps'] ?? null, - 'radar' => $data['radar'] ?? null, - 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, - 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, - 'sistem_autopilot' => $data['sistem_autopilot'] ?? null, - 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, - - 'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null, - 'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null, - 'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null, - 'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null, - 'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null, - 'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null, - - 'mesin_utama' => $data['mesin_utama'] ?? null, - 'sistem_pendorong' => $data['sistem_pendorong'] ?? null, - 'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null, - 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, - 'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null, - 'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null, - - 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, - 'pintu_darurat' => $data['pintu_darurat'] ?? null, - 'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null, - 'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null, - 'sekoci' => $data['sekoci'] ?? null, - 'masker_oxigen' => $data['masker_oxigen'] ?? null, - 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, - 'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null, - - 'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null, - 'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null, - 'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null, - 'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null, - 'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null, - - // Validasi untuk faktor dan kesimpulan - - 'fakta_positif' => $data['fakta_positif'] ?? null, - 'fakta_negatif' => $data['fakta_negatif'] ?? null, - 'kesimpulan' => $data['kesimpulan'] ?? null, - 'catatan' => $data['catatan'] ?? null, - ]; - } - - - - - private function getUnitData($data, $request): array - { - - - $luas_unit_key = ($data['luas_unit'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - $luas_unit = []; - - $hasil_luas_unit = $luas_unit_key === 'sesuai' - ? ($data['luas_unit_sesuai'] ?? null) - : ($data['luas_unit_tidak_sesuai'] ?? null); - - // Masukkan key baru yang sesuai - $luas_unit[$luas_unit_key] = preg_replace('/[^0-9.,]/', '', $hasil_luas_unit); - - return [ - 'action' => $data['action'] ?? null, - 'luas_unit' => $luas_unit, - 'kondisi_unit' => $data['kondisi_unit'] ?? null, - 'posisi_unit' => $data['posisi_unit'] ?? null, - 'lantai' => $data['lantai'] ?? null, - 'view' => $data['view'] ?? null, - 'bentuk_unit' => $data['bentuk_unit'] ?? null, - ]; - } - - /** * Helper untuk upload file @@ -3335,49 +2357,6 @@ class SurveyorController extends Controller } - - - /** - * Helper method generic untuk mengambil data field - * - * @param array $data Array sumber data - * @param string $fieldName Nama field - * @param bool $checkKesesuaian Apakah perlu cek kesesuaian - * @param string|null $extraField Field tambahan (misal 'lainnya') - * @return array - */ - private function getFieldData( - array $data, - string $fieldName, - bool $checkKesesuaian = false, - ?string $extraField = null - ): array { - $result = []; - - if ($checkKesesuaian) { - $isSesuai = ($data[$fieldName] ?? '') === 'sesuai'; - $fieldKey = $isSesuai ? "{$fieldName}_sesuai" : "{$fieldName}_tidak_sesuai"; - - // Hanya simpan key yang dipilih - if ($isSesuai) { - $result['sesuai'] = $data[$fieldKey] ?? null; - } else { - $result['tidak sesuai'] = $data[$fieldKey] ?? null; - } - } else { - $result[$fieldName] = $data[$fieldName] ?? null; - - if ($extraField) { - $result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null; - } - } - - // Hapus key dengan nilai null untuk memastikan hanya key yang valid yang disimpan - return array_filter($result, fn ($value) => $value !== null); - } - - - public function export(string $type) { $modelClass = $this->getModelClass($type); @@ -3563,30 +2542,6 @@ class SurveyorController extends Controller } } - private function arrayMergeRecursive($arr1, $arr2) - { - foreach ($arr2 as $key => $value) { - if ($key === 'signature' && isset($arr1['signature'])) { - // Jika key adalah signature, gabungkan secara spesifik - $arr1['signature'] = array_merge($arr1['signature'], $value); - } elseif (is_array($value) && isset($arr1[$key]) && is_array($arr1[$key])) { - // Rekursif untuk key lainnya - $arr1[$key] = $this->arrayMergeRecursive($arr1[$key], $value); - } else { - // Ganti nilai lama dengan nilai baru - $arr1[$key] = $value; - } - } - - // Bersihkan key lama yang tidak ada di array baru - foreach ($arr1 as $key => $value) { - if (!array_key_exists($key, $arr2) && $key !== 'signature') { - unset($arr1[$key]); - } - } - - return $arr1; - } diff --git a/app/Services/SaveFormInspesksiService.php b/app/Services/SaveFormInspesksiService.php new file mode 100644 index 0000000..89d46db --- /dev/null +++ b/app/Services/SaveFormInspesksiService.php @@ -0,0 +1,1060 @@ +getActionSpecificRules($validatedData, $type, $request); + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('dokument_id', $request->input('dokument_id')) + ->first(); + + if ($inspeksi) { + // Jika data sudah ada, merge dengan data yang baru + $existingData = json_decode($inspeksi->data_form, true) ?: []; + + if (isset($existingData['signature']) && !isset($processedData['signature'])) { + $processedData['signature'] = $existingData['signature']; + } + + $mergedData = $this->arrayMergeRecursive($existingData, $processedData); + + // Update record + $inspeksi->update([ + 'data_form' => json_encode($mergedData), + 'name' => $request->input('type') + ]); + + $responseData = $mergedData; + } else { + // Jika belum ada data, buat record baru + $inspeksi = Inspeksi::create([ + 'permohonan_id' => $request->input('permohonan_id'), + 'dokument_id' => $request->input('dokument_id'), + 'data_form' => json_encode($processedData), + 'name' => $request->input('type') + ]); + + $responseData = $processedData; + } + return [ + 'success' => true, + 'message' => 'Data berhasil disimpan', + ]; + } catch (\Exception $e) { + return [ + 'success' => false, + 'message' => 'Gagal menyimpan data', + 'error' => $e->getMessage() + ]; + } + } + + + private function getActionSpecificRules($data, $action, $request): array + { + $allowedActions = [ + 'apartemen-kantor' => 'getUnitData', + 'tanah' => 'getTanahData', + 'bangunan' => 'getBangunanData', + 'kapal' => 'getKapalData', + 'kendaraan' => 'getKendaraanData', + 'mesin' => 'getMesinData', + 'pesawat' => 'getPesawatData', + 'alat-berat' => 'getAlatBeratData', + 'lingkungan' => 'getLingkunganData', + 'fakta' => 'getFactData', + 'informasi' => 'getFactData', + 'rap' => 'getRapData', + ]; + + $rules = []; + $hasAssetDescriptionRules = false; + $hasFactaData = false; + + + + $pisah = array_filter( + explode(',', $action), + function ($act) use ($allowedActions) { + return isset($allowedActions[trim($act)]); + } + ); + + // dd($pisah); + + foreach ($pisah as $act) { + $act = trim($act); // Bersihkan spasi + if (isset($allowedActions[$act])) { + $method = $allowedActions[$act]; + + $actionRules = $this->$method($data, $request); + $rules = array_merge($rules, $actionRules); + + // Cek apakah act memerlukan asset description rules + if (in_array($act, ['apartemen-kantor', 'tanah', 'bangunan', 'rap'])) { + $hasAssetDescriptionRules = true; + } + + // Cek apakah act memerlukan fakta data + if (in_array($act, ['rap'])) { + $hasFactaData = true; + } + } + + } + + if ($hasAssetDescriptionRules) { + $rules = array_merge($rules, $this->getAssetData($data)); + } + + if ($hasFactaData) { + $rules = array_merge($rules, $this->getFactData($data, $request)); + } + + return $rules; + } + + + private function getUnitData($data, $request): array + { + + + $luas_unit_key = ($data['luas_unit'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $luas_unit = []; + + $hasil_luas_unit = $luas_unit_key === 'sesuai' + ? ($data['luas_unit_sesuai'] ?? null) + : ($data['luas_unit_tidak_sesuai'] ?? null); + + // Masukkan key baru yang sesuai + $luas_unit[$luas_unit_key] = preg_replace('/[^0-9.,]/', '', $hasil_luas_unit); + + return [ + 'action' => $data['action'] ?? null, + 'luas_unit' => $luas_unit, + 'kondisi_unit' => $data['kondisi_unit'] ?? null, + 'posisi_unit' => $data['posisi_unit'] ?? null, + 'lantai' => $data['lantai'] ?? null, + 'view' => $data['view'] ?? null, + 'bentuk_unit' => $data['bentuk_unit'] ?? null, + ]; + } + + private function getAssetData(array $data): array + { + $alamatData = [ + 'address' => $data['address'] ?? null, + 'village_code' => $data['village_code'] ?? null, + 'district_code' => $data['district_code'] ?? null, + 'city_code' => $data['city_code'] ?? null, + 'province_code' => $data['province_code'] ?? null, + ]; + + $alamatKey = ($data['alamat_sesuai'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $alamat = []; + $alamat[$alamatKey] = $alamatData; + + + $jenis_asset = []; + if (($data['jenis_asset'] ?? null) === 'tidak sesuai') { + $jenis_asset['tidak sesuai'] = $data['jenis_asset_tidak_sesuai'] ?? null; + + if ($data['jenis_asset_tidak_sesuai'] === 'Lainnya') { + $jenis_asset['Lainnya'] = $data['jenis_asset_lainnya'] ?? null; + } + } else { + $jenis_asset['sesuai'] = $data['jenis_asset_name'] ?? null; + } + + + return [ + 'asset' => [ + 'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [], + 'jenis_asset' => $jenis_asset ?? null, + 'alamat' => $alamat ?? null, + 'hub_cadeb' => [ + $data['hub_cadeb'] ?? null => ($data['hub_cadeb'] ?? null) === 'sesuai' + ? ($data['hub_cadeb_sesuai'] ?? null) + : ($data['hub_cadeb_tidak_sesuai'] ?? null) + ], + 'hub_cadeb_penghuni' => [ + $data['hub_cadeb_penghuni'] ?? null => ($data['hub_cadeb_penghuni'] ?? null) === 'sesuai' + ? ($data['hub_cadeb_penghuni_sesuai'] ?? null) + : ($data['hub_penghuni_tidak_sesuai'] ?? null) + ], + + 'pihak_bank' => $data['pihak_bank'] ?? null, + + 'kordinat_lng' => $data['kordinat_lng'] ?? null, + 'kordinat_lat' => $data['kordinat_lat'] ?? null, + // 'nomor_nib' => $data['nomor_nib'] ?? null + ] + ]; + } + + private function getTanahData(array $data): array + { + //luas tanah key + // Luas tanah key + $luas_tanah_key = ($data['luas_tanah'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $luas_tanah = []; + $hasil_tanah = $luas_tanah_key === 'sesuai' + ? ($data['luas_tanah_sesuai'] ?? null) + : ($data['luas_tanah_tidak_sesuai'] ?? null); + $luas_tanah[$luas_tanah_key] = preg_replace('/[^0-9.,]/', '', $hasil_tanah); + + // Hadap mata angin key + $hadap_mata_angin_key = ($data['hadap_mata_angin'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $hadap_mata_angin = []; + $hasil_hadap_mata_angin = $hadap_mata_angin_key === 'sesuai' + ? ($data['hadap_mata_angin_sesuai'] ?? null) + : ($data['hadap_mata_angin_tidak_sesuai'] ?? null); + $hadap_mata_angin[$hadap_mata_angin_key] = $hasil_hadap_mata_angin; + + $tusuk_sate_key = ($data['tusuk_sate'] ?? null) === 'Ya' ? 'Ya' : 'Tidak'; + + $tusuk_sate = []; + $tusuk_sate[$tusuk_sate_key] = $data['tusuk_sate_ya'] ?? null; + + + return [ + 'tanah' => [ + 'luas_tanah' => $luas_tanah, + 'hadap_mata_angin' => $hadap_mata_angin, + 'bentuk_tanah' => $this->getFieldData( + $data, + 'bentuk_tanah', + false, + 'lainnya' + ), + 'kontur_tanah' => $data['kontur_tanah'] ?? [], + 'ketinggian_tanah' => [ + 'ketinggian' => $data['ketinggian_jalan'] ?? null, + 'lebih_tinggi' => $data['ketinggian_lebih_tinggi'] ?? null, + 'lebih_rendah' => $data['ketinggian_lebih_rendah'] ?? null + ], + 'kontur_jalan' => $data['kontur_jalan'] ?? null, + 'ketinggian_jalan' => $data['ketinggian_jalan'] ?? [], + 'posisi_kavling' => $this->getFieldData( + $data, + 'posisi_kavling', + false, + 'lainnya' + ), + + 'tusuk_sate' => $tusuk_sate, + 'lockland' => $data['lockland'] ?? null, + 'kondisi_fisik_tanah' => $this->getFieldData( + $data, + 'kondisi_fisik_tanah', + false, + 'lainnya' + ) + ] + ]; + } + + + private function getBangunanData($data, $request): array + { + $data = $request->all(); + $result = []; + + + foreach ($request->input('nama_bangunan') as $index => $buildingName) { + if (empty($buildingName)) { + continue; + } // Skip if building name is empty + + $buildingData = []; + $buildingData['bagunan'] = $buildingName; + + $specCategories = $request->input('spek_kategori_bangunan'); + $buildingData['spek_kategori_bangunan'] = []; + + if (!empty($specCategories)) { + foreach ($specCategories as $category) { + if (empty($category)) { + continue; + } // Skip empty categories + + $specs = $request->input("spek_bangunan.{$index}.{$category}", []); + + // Only add category if it has specifications + if (!empty($specs)) { + $buildingData['spek_kategori_bangunan'][$category] = $specs; + } + } + } + + // Only add building data if it has specifications + if (!empty($buildingData['spek_kategori_bangunan'])) { + $result[] = $buildingData; + } + } + + + + $luas_tanah_bagunan_key = ($data['luas_tanah_bagunan'] ?? null) === 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $luas_tanah_bagunan = []; + + $hasil_tanah_bagunan = $luas_tanah_bagunan_key === 'sesuai' + ? ($data['luas_bangunan_sesuai'] ?? null) + : ($data['luas_tanah_bagunan_tidak_sesuai'] ?? null); + + // Masukkan key baru yang sesuai + $luas_tanah_bagunan[$luas_tanah_bagunan_key] = preg_replace('/[^0-9.,]/', '', $hasil_tanah_bagunan); + + + return [ + 'bangunan' => [ + 'luas_tanah_bagunan' => $luas_tanah_bagunan, + 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, + 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, + 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, + 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, + 'spesifikasi_bangunan' => $result ?? null, + 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? null, + 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, + ], + ]; + } + + private function getLingkunganData($data, $request): array + { + return [ + 'lingkungan' => [ + 'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null, + 'jalan_linkungan' => $data['jalan_linkungan'] ?? null, + 'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null, + 'nama_cbd_point' => $data['nama_cbd_point'] ?? null, + 'lebar_perkerasan_jalan' => $data['lebar_perkerasan_jalan'] ?? null, + 'perkerasan_jalan' => $this->getFieldData( + $data, + 'perkerasan_jalan', + false, + 'lainnya' + ), + 'lalu_lintas' => $data['lalu_lintas'] ?? null, + 'gol_mas_sekitar' => $data['gol_mas_sekitar'] ?? null, + 'tingkat_keramaian' => $data['tingkat_keramaian'] ?? null, + 'terletak_diarea' => $this->getFieldData( + $data, + 'terletak_diarea', + false, + 'lainnya' + ), + 'disekitar_lokasi' => ($data['disekitar_lokasi'] ?? null) === 'yes' ? [ + 'kondisi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, + 'sifat' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, +] : ($data['disekitar_lokasi'] ?? null), + + 'kondisi_bagunan_disekitar_lokasi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, + 'sifat_bagunan_disekitar_lokasi' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, + 'dekat_makam' => $data['dekat_makam'] ?? null, + 'jarak_makam' => $data['jarak_makam'] ?? null, + 'nama_makam' => $data['nama_makam'] ?? null, + 'dekat_tps' => $data['dekat_tps'] ?? null, + 'jarak_tps' => $data['jarak_tps'] ?? null, + 'nama_tps' => $data['nama_tps'] ?? null, + 'dekat_lainnya' => $data['dekat_lainnya'] ?? null, + 'merupakan_daerah' => $data['merupakan_daerah'] ?? null, + 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null, + 'fasilitas_dekat_object_input' => $data['fasilitas_dekat_object_input'] ?? null, + ] + ]; + } + + + private function getFactData($data, $request): array + { + $factData = [ + 'fakta' => [ + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'rute_menuju' => $data['rute_menuju'] ?? null, + 'batas_batas' => $data['batas_batas'] ?? null, + 'batas_batas_input' => $data['batas_batas_input'] ?? null, + 'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null, + 'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null, + 'informasi_dokument' => $data['informasi_dokument'] ?? null, + 'peruntukan' => $data['peruntukan'] ?? null, + 'kdb' => $data['kdb'] ?? null, + 'kdh' => $data['kdh'] ?? null, + 'gsb' => $data['gsb'] ?? null, + 'max_lantai' => $data['max_lantai'] ?? null, + 'klb' => $data['klb'] ?? null, + 'gss' => $data['gss'] ?? null, + 'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null, + 'nama_petugas' => $data['nama_petugas'] ?? null, + 'keterangan' => $data['keterangan'] ?? null, + ] + ]; + + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('dokument_id', $request->input('dokument_id'))->first(); + + + $fotoTypes = [ + 'foto_gistaru', + 'foto_bhumi', + 'foto_argis_region', + 'foto_tempat', + 'foto_sentuh_tanahku', + 'upload_gs' + ]; + + if ($inspeksi) { + $dataForm = json_decode($inspeksi->data_form, true); + foreach ($fotoTypes as $fotoType) { + // Jika ada file baru diupload + if ($request->hasFile($fotoType)) { + $factData[$fotoType] = $this->updateOrDeleteFile($dataForm, $request, $fotoType) ?: null; + } else { + $factData[$fotoType] = $dataForm[$fotoType] ?? null; + } + } + } else { + foreach ($fotoTypes as $fotoType) { + $factData[$fotoType] = $this->updateOrDeleteFile($data, $request, $fotoType) ?: null; + } + } + + return $factData; + } + + private function getRapData($data, $request): array + { + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('dokument_id', $request->input('dokument_id')) + ->first(); + + $dataForm = json_decode($inspeksi->data_form, true); + + $perizinanData = isset($dataForm['perizinan']) ? $dataForm['perizinan'] : []; + + if ($request->has('perizinan')) { + foreach ($request->perizinan as $key => $perizinanName) { + // Cek apakah ada file baru yang diupload + if ($request->hasFile("perizinan_file.{$key}")) { + // Jika ada file baru, tambahkan/update data + $file = $request->file("perizinan_file.{$key}"); + $path = $file->store('perizinan', 'public'); + + // Cek apakah perizinan dengan nama yang sama sudah ada + $existingIndex = array_search($perizinanName, array_column($perizinanData, 'perizinan')); + + if ($existingIndex !== false) { + // Update file untuk perizinan yang sudah ada + $perizinanData[$existingIndex] = [ + 'perizinan' => $perizinanName, + 'perizinan_file' => $path + ]; + } else { + // Tambah perizinan baru + $perizinanData[] = [ + 'perizinan' => $perizinanName, + 'perizinan_file' => $path + ]; + } + } + } + } + + $data['perizinan'] = $perizinanData; + + + + $partisiResult = []; + if (isset($data['partisi'])) { + foreach ($data['partisi'] as $name => $values) { + if (!empty($values['value'])) { + $partisiResult[$name] = [ + 'nama' => $values['nama'], + 'value' => $values['value'] + ]; + } + } + } + + $brosurData = isset($dataForm['brosur_price_list']) ? $dataForm['brosur_price_list'] : []; + + if ($request->has('brosur_price_list')) { + foreach ($request->brosur_price_list as $key => $jenis) { + // Cek apakah ada file baru yang diupload + if ($request->hasFile("brosur_price_list_file.{$key}")) { + // Jika ada file baru, tambahkan/update data + $file = $request->file("brosur_price_list_file.{$key}"); + $path = $file->store('brosur-pricelist', 'public'); + + // Cek apakah jenis brosur yang sama sudah ada + $existingIndex = array_search($jenis, array_column($brosurData, 'jenis')); + + if ($existingIndex !== false) { + // Update file untuk jenis yang sudah ada + $brosurData[$existingIndex] = [ + 'jenis' => $jenis, + 'file_path' => $path + ]; + } else { + // Tambah jenis brosur baru + $brosurData[] = [ + 'jenis' => $jenis, + 'file_path' => $path + ]; + } + } + } + } + + $data['brosur_price_list'] = $brosurData; + $rapData = [ + 'perizinan' => $perizinanData ?? null, + 'brosur_price_list' => $brosurData ?? null, + + 'pengalaman_developer' => $data['pengalaman_developer'] ?? null, + 'developer_anggota' => $data['developer_anggota'] ?? null, + 'lainnya_developer' => $data['lainnya_developer'] ?? null, + 'kapan_mulai_dibangun' => $data['kapan_mulai_dibangun'] ?? null, + 'kondisi_perumahan' => $data['kondisi_perumahan'] ?? null, + 'progres_pembangunan' => $data['progres_pembangunan'] ?? null, + 'kontraktor' => $data['kontraktor'] ?? null, + 'lingkungan_sekitar' => $data['lingkungan_sekitar'] ?? null, + 'komplek_disekitar' => $data['komplek_disekitar'] ?? null, + 'pusat_keramaian' => $data['pusat_keramaian'] ?? null, + 'transportasi_umum' => $data['transportasi_umum'] ?? null, + 'lainnya_kondisi' => $data['lainnya_kondisi'] ?? null, + 'partisi' => $partisiResult ?? null, + 'jumlah_unit' => $data['jumlah_unit'] ?? null, + 'batas_batas_perumahan' => $data['batas_batas_perumahan'] ?? null, + 'fasus_fasum' => $data['fasus_fasum'] ?? null, + 'progres_penjualan' => $data['progres_penjualan'] ?? null, + 'harga_unit' => $data['harga_unit'] ?? null, + 'target_market' => $data['target_market'] ?? null, + 'kerjasama_dengan_bank' => $data['kerjasama_dengan_bank'] ?? null, + 'rute_menuju_lokasi' => $data['rute_menuju_lokasi'] ?? null, + 'properti_sejenis' => $data['properti_sejenis'] ?? null, + ]; + + return $rapData; + } + + private function getKapalData($data, $request): array + { + + $alamatData = [ + 'village_code' => $data['village_code'] ?? null, + 'district_code' => $data['district_code'] ?? null, + 'city_code' => $data['city_code'] ?? null, + 'province_code' => $data['province_code'] ?? null, + ]; + return [ + + 'action' => $data['action'] ?? null, + 'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'dermaga' => $data['dermaga'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok_nomor' => $data['blok_nomor'] ?? null, + 'bandara' => $data['bandara'] ?? null, + 'alamat' => [ + 'sesuai' => $alamatData + ], + 'jenis_kapal' => $data['jenis_kapal'] ?? null, + 'jenis_kapal_lainnya' => $data['jenis_kapal_lainnya'] ?? null, + 'size' => $data['size'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + 'klasifikasi' => $data['klasifikasi'] ?? null, + + 'nama_kapal' => $data['nama_kapal'] ?? null, + 'pemilik_kapal' => $data['pemilik_kapal'] ?? null, + 'bendera' => $data['bendera'] ?? null, + 'nomor_selar' => $data['nomor_selar'] ?? null, + 'kapal' => $data['kapal'] ?? null, + 'galangan_kapal' => $data['galangan_kapal'] ?? null, + 'kapal_shipyard' => $data['kapal_shipyard'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'tahun_launcing' => $data['tahun_launcing'] ?? null, + 'dwt' => $data['dwt'] ?? null, + 'lwt' => $data['lwt'] ?? null, + 'gross_tonnage' => $data['gross_tonnage'] ?? null, + 'net_tonnage' => $data['net_tonnage'] ?? null, + 'tenaga_mesin' => $data['tenaga_mesin'] ?? null, + 'loa' => $data['loa'] ?? null, + 'lbp' => $data['lbp'] ?? null, + 'beam' => $data['beam'] ?? null, + 'depth' => $data['depth'] ?? null, + 'draft' => $data['draft'] ?? null, + + + 'lambung_kapal' => $data['lambung_kapal'] ?? null, + 'dek' => $data['dek'] ?? null, + 'struktur_rangka' => $data['struktur_rangka'] ?? null, + 'palka' => $data['palka'] ?? null, + 'pondasi_mesin' => $data['pondasi_mesin'] ?? null, + 'area_mesin' => $data['area_mesin'] ?? null, + 'cat_dan_korosi' => $data['cat_dan_korosi'] ?? null, + 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, + 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, + + 'sekoci' => $data['sekoci'] ?? null, + 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, + 'alat_pemadaman' => $data['alat_pemadaman'] ?? null, + 'rambu_darurat' => $data['rambu_darurat'] ?? null, + 'sistem_alarm' => $data['sistem_alarm'] ?? null, + 'sistem_pencegah' => $data['sistem_pencegah'] ?? null, + 'kebakaran' => $data['kebakaran'] ?? null, + 'lampu_darurat' => $data['lampu_darurat'] ?? null, + 'deskripsi_peralatan' => $data['deskripsi_peralatan'] ?? null, + + 'gps' => $data['gps'] ?? null, + 'radar' => $data['radar'] ?? null, + 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_kendali_otomatis' => $data['sistem_kendali_otomatis'] ?? null, + 'kompas' => $data['kompas'] ?? null, + 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, + + 'mesin_utama' => $data['mesin_utama'] ?? null, + 'mesin_bantu' => $data['mesin_bantu'] ?? null, + 'pompa_pendingin' => $data['pompa_pendingin'] ?? null, + 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, + 'propeller' => $data['propeller'] ?? null, + 'sistem_kelistrikan' => $data['sistem_kelistrikan'] ?? null, + 'deskripsi_mesin_penggerak' => $data['deskripsi_mesin_penggerak'] ?? null, + + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_penerangan' => $data['sistem_penerangan'] ?? null, + 'sistem_panel_distribusi' => $data['sistem_panel_distribusi'] ?? null, + 'kabel_perangkat' => $data['kabel_perangkat'] ?? null, + 'deskripsi_kelistrikan' => $data['deskripsi_kelistrikan'] ?? null, + + 'kebersihan_dek_luar' => $data['kebersihan_dek_luar'] ?? null, + 'tangki_limbah' => $data['tangki_limbah'] ?? null, + 'sistem_pengelolaan_limbah' => $data['sistem_pengelolaan_limbah'] ?? null, + 'pengelolaan_air_ballast' => $data['pengelolaan_air_ballast'] ?? null, + 'deskripsi_kebersihan' => $data['deskripsi_kebersihan'] ?? null, + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'analisa_makro' => $data['analisa_makro'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + + ]; + } + public function getKendaraanData($data, $request): array + { + $alamatData = [ + 'village_code' => $data['village_code'] ?? null, + 'district_code' => $data['district_code'] ?? null, + 'city_code' => $data['city_code'] ?? null, + 'province_code' => $data['province_code'] ?? null, + ]; + + return [ + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok_nomor' => $data['blok_nomor'] ?? null, + 'alamat' => [ + 'sesuai' => $alamatData + ], + 'masa_stnk' => $data['masa_stnk'] ?? null, + 'masa_pajak' => $data['masa_pajak'] ?? null, + 'kendaraan' => $data['kendaraan'] ?? null, + 'kendaraan_input' => $data['kendaraan_input'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + + 'nomor_polisi' => $data['nomor_polisi'] ?? null, + 'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null, + 'merek' => $data['merek'] ?? null, + 'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null, + 'warna' => $data['warna'] ?? null, + 'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null, + 'nomor_rangka' => $data['nomor_rangka'] ?? null, + 'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null, + 'nomor_mesin' => $data['nomor_mesin'] ?? null, + 'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null, + 'posisi_kilometer' => $data['posisi_kilometer'] ?? null, + 'transmisi' => $data['transmisi'] ?? null, + 'transmisi_input' => $data['transmisi_input'] ?? null, + 'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null, + 'mesin_panel_instrument_input' => $data['mesin_panel_instrument_input'] ?? null, + 'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null, + 'fungsi_mesin_panel_instrument_input' => $data['fungsi_mesin_panel_instrument_input'] ?? null, + 'interior' => $data['interior'] ?? null, + 'interior_input' => $data['interior_input'] ?? null, + 'jumlah_pintu' => $data['jumlah_pintu'] ?? null, + 'jumlah_pintu_input' => $data['jumlah_pintu_input'] ?? null, + 'rangka_karoseri' => $data['rangka_karoseri'] ?? null, + 'rangka_karoseri_input' => $data['rangka_karoseri_input'] ?? null, + 'ban' => $data['ban'] ?? null, + 'ban_input' => $data['ban_input'] ?? null, + 'velg' => $data['velg'] ?? null, + 'velg_input' => $data['velg_input'] ?? null, + + + + 'bamper_depan' => $data['bamper_depan'] ?? null, + 'bamper_depan_input' => $data['bamper_depan_input'] ?? null, + 'bamper_belakang' => $data['bamper_belakang'] ?? null, + 'bamper_belakang_input' => $data['bamper_belakang_input'] ?? null, + 'lampu_depan' => $data['lampu_depan'] ?? null, + 'lampu_depan_input' => $data['lampu_depan_input'] ?? null, + 'lampu_belakang' => $data['lampu_belakang'] ?? null, + 'lampu_belakang_input' => $data['lampu_belakang_input'] ?? null, + 'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null, + 'kaca_kendaraan_input' => $data['kaca_kendaraan_input'] ?? null, + 'air_conditioner' => $data['air_conditioner'] ?? null, + 'air_conditioner_input' => $data['air_conditioner_input'] ?? null, + 'tape_radio_cd' => $data['tape_radio_cd'] ?? null, + 'tape_radio_cd_input' => $data['tape_radio_cd_input'] ?? null, + 'sensor_parkir' => $data['sensor_parkir'] ?? null, + 'sensor_parkir_input' => $data['sensor_parkir_input'] ?? null, + 'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null, + 'sensor_camera_recorder_input' => $data['sensor_camera_recorder_input'] ?? null, + 'lcd' => $data['lcd'] ?? null, + 'lcd_input' => $data['lcd_input'] ?? null, + 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, + 'sabuk_keselamatan_input' => $data['sabuk_keselamatan_input'] ?? null, + 'airbag' => $data['airbag'] ?? null, + 'airbag_input' => $data['airbag_input'] ?? null, + 'asuransi' => $data['asuransi'] ?? null, + 'asuransi_input' => $data['asuransi_input'] ?? null, + 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, + 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, + + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'analisa_makro' => $data['analisa_makro'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + ]; + } + + public function getMesinData($data, $request): array + { + return [ + 'action' => $data['action'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok' => $data['blok'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'tipe_model' => $data['tipe_model'] ?? null, + 'merek' => $data['merek'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'negara_pembuat' => $data['negara_pembuat'] ?? null, + 'kondisi_mesin' => $data['kondisi_mesin'] ?? null, + 'faktor_positif' => $data['faktor_positif'] ?? null, + 'faktor_negatif' => $data['faktor_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + ]; + } + + public function getAlatBeratData($data, $request): array + { + $alamatData = [ + 'village_code' => $data['village_code'] ?? null, + 'district_code' => $data['district_code'] ?? null, + 'city_code' => $data['city_code'] ?? null, + 'province_code' => $data['province_code'] ?? null, + ]; + + return [ + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'dengan_wadeb' => $data['dengan_wadeb'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok_nomor' => $data['blok_nomor'] ?? null, + 'alamat' => [ + 'sesuai' => $alamatData + ], + 'jenis_model' => $data['jenis_model'] ?? null, + 'nomor_lambung' => $data['nomor_lambung'] ?? null, + 'model_unit' => $data['model_unit'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'merk' => $data['merk'] ?? null, + 'negara_pembuat' => $data['negara_pembuat'] ?? null, + 'tahun_pembelian' => $data['tahun_pembelian'] ?? null, + 'nomor_faktur' => $data['nomor_faktur'] ?? null, + 'nomor_kontrak' => $data['nomor_kontrak'] ?? null, + 'nama_pemilik' => $data['nama_pemilik'] ?? null, + 'alamat_pemilik' => $data['alamat_pemilik'] ?? null, + 'nomor_asuransi' => $data['nomor_asuransi'] ?? null, + 'nomor_rangka' => $data['nomor_rangka'] ?? null, + 'nomor_mesin' => $data['nomor_mesin'] ?? null, + 'hour_mesters' => $data['hour_mesters'] ?? null, + 'overhaul_mesin' => $data['overhaul_mesin'] ?? null, + + 'mesin_panel' => $data['mesin_panel'] ?? null, + 'mesin_panel_input' => $data['mesin_panel_input'] ?? null, + 'fungsi_panel' => $data['fungsi_panel'] ?? null, + 'fungsi_panel_input' => $data['fungsi_panel_input'] ?? null, + 'interior' => $data['interior'] ?? null, + 'interior_input' => $data['interior_input'] ?? null, + 'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null, + 'rangka_Karoseri_input' => $data['rangka_Karoseri_input'] ?? null, + 'ban' => $data['ban'] ?? null, + 'ban_input' => $data['ban_input'] ?? null, + 'velg' => $data['velg'] ?? null, + 'velg_input' => $data['velg_input'] ?? null, + 'air_conditioner' => $data['air_conditioner'] ?? null, + 'air_conditioner_input' => $data['air_conditioner_input'] ?? null, + 'aksesoris' => $data['aksesoris'] ?? null, + 'aksesoris_input' => $data['aksesoris_input'] ?? null, + 'lcd' => $data['lcd'] ?? null, + 'lcd_input' => $data['lcd_input'] ?? null, + 'perlengkapan' => $data['perlengkapan'] ?? null, + 'perlengkapan_input' => $data['perlengkapan_input'] ?? null, + 'asuransi' => $data['asuransi'] ?? null, + 'asuransi_input' => $data['asuransi_input'] ?? null, + 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, + 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, + 'sensor_kamera' => $data['sensor_kamera'] ?? null, + 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, + 'air_bag' => $data['air_bag'] ?? null, + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + ]; + } + + private function getPesawatData($data, $request): array + { + $alamatData = [ + 'village_code' => $data['village_code'] ?? null, + 'district_code' => $data['district_code'] ?? null, + 'city_code' => $data['city_code'] ?? null, + 'province_code' => $data['province_code'] ?? null, + ]; + return [ + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok_nomor' => $data['blok_nomor'] ?? null, + 'bandara' => $data['bandara'] ?? null, + 'alamat' => [ + 'sesuai' => $alamatData + ], + 'jenis_pesawat' => $data['jenis_pesawat'] ?? null, + 'jenis_pesawat_lainnya' => $data['jenis_pesawat_lainnya'] ?? null, + + 'size' => $data['size'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + 'nama_pesawat' => $data['nama_pesawat'] ?? null, + 'model' => $data['model'] ?? null, + 'nomor_registrasi' => $data['nomor_registrasi'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null, + 'certificate_of_registration' => $data['certificate_of_registration'] ?? null, + 'total_service_hours' => $data['total_service_hours'] ?? null, + 'total_service_cycles' => $data['total_service_cycles'] ?? null, + + 'last_a_check' => $data['last_a_check'] ?? null, + 'next_a_check' => $data['next_a_check'] ?? null, + 'last_b_check' => $data['last_b_check'] ?? null, + 'next_b_check' => $data['next_b_check'] ?? null, + 'last_c_check' => $data['last_c_check'] ?? null, + 'next_c_check' => $data['next_c_check'] ?? null, + 'next_d_check' => $data['next_d_check'] ?? null, + 'last_d_check' => $data['last_d_check'] ?? null, + 'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null, + + 'instrument_landing_system' => $data['instrument_landing_system'] ?? null, + 'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null, + 'windshear' => $data['windshear'] ?? null, + 'electronic_flight' => $data['electronic_flight'] ?? null, + 'winglets' => $data['winglets'] ?? null, + 'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null, + + 'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null, + 'jumlah_kursi' => $data['jumlah_kursi'] ?? null, + 'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null, + 'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null, + 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, + 'lampu_kabin' => $data['lampu_kabin'] ?? null, + 'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null, + 'intercom_kabin' => $data['intercom_kabin'] ?? null, + 'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null, + + 'badan_pesawat' => $data['badan_pesawat'] ?? null, + 'sayap_pesawat' => $data['sayap_pesawat'] ?? null, + 'ekor_pesawat' => $data['ekor_pesawat'] ?? null, + 'landing_gear' => $data['landing_gear'] ?? null, + 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, + 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, + + 'gps' => $data['gps'] ?? null, + 'radar' => $data['radar'] ?? null, + 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_autopilot' => $data['sistem_autopilot'] ?? null, + 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, + + 'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null, + 'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null, + 'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null, + 'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null, + 'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null, + 'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null, + + 'mesin_utama' => $data['mesin_utama'] ?? null, + 'sistem_pendorong' => $data['sistem_pendorong'] ?? null, + 'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null, + 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, + 'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null, + 'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null, + + 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, + 'pintu_darurat' => $data['pintu_darurat'] ?? null, + 'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null, + 'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null, + 'sekoci' => $data['sekoci'] ?? null, + 'masker_oxigen' => $data['masker_oxigen'] ?? null, + 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, + 'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null, + + 'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null, + 'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null, + 'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null, + 'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null, + 'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null, + + // Validasi untuk faktor dan kesimpulan + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + ]; + } + + private function arrayMergeRecursive($arr1, $arr2) + { + foreach ($arr2 as $key => $value) { + if ($key === 'signature' && isset($arr1['signature'])) { + // Jika key adalah signature, gabungkan secara spesifik + $arr1['signature'] = array_merge($arr1['signature'], $value); + } elseif (is_array($value) && isset($arr1[$key]) && is_array($arr1[$key])) { + // Rekursif untuk key lainnya + $arr1[$key] = $this->arrayMergeRecursive($arr1[$key], $value); + } else { + // Ganti nilai lama dengan nilai baru + $arr1[$key] = $value; + } + } + + // Bersihkan key lama yang tidak ada di array baru + foreach ($arr1 as $key => $value) { + if (!array_key_exists($key, $arr2) && $key !== 'signature') { + unset($arr1[$key]); + } + } + + return $arr1; + } + + private function updateOrDeleteFile($data, $request, $fileKey) + { + if ($request->hasFile($fileKey)) { + $file = $request->file($fileKey); + if ($file->isValid()) { + $fileName = time() . '_' . $file->getClientOriginalName(); + $path = $file->storeAs("public/surveyor/{$request->type}", $fileName); + + if ($path === false) { + throw new Exception("Failed to store file for {$fileKey}"); + } + if (isset($data[$fileKey]) && $data[$fileKey]) { + $this->deleteFile($data[$fileKey]); + } + return str_replace('public/', '', $path); + } else { + throw new Exception("Invalid file upload for {$fileKey}"); + } + } elseif (isset($data[$fileKey]) && $data[$fileKey]) { + return $data[$fileKey]; + } else { + return null; + } + } + + private function deleteFile($filePath) + { + $fullPath = storage_path('app/public/' . $filePath); + if (file_exists($fullPath)) { + unlink($fullPath); + } + } + + + /** + * Helper method generic untuk mengambil data field + * + * @param array $data Array sumber data + * @param string $fieldName Nama field + * @param bool $checkKesesuaian Apakah perlu cek kesesuaian + * @param string|null $extraField Field tambahan (misal 'lainnya') + * @return array + */ + private function getFieldData( + array $data, + string $fieldName, + bool $checkKesesuaian = false, + ?string $extraField = null + ): array { + $result = []; + + if ($checkKesesuaian) { + $isSesuai = ($data[$fieldName] ?? '') === 'sesuai'; + $fieldKey = $isSesuai ? "{$fieldName}_sesuai" : "{$fieldName}_tidak_sesuai"; + + // Hanya simpan key yang dipilih + if ($isSesuai) { + $result['sesuai'] = $data[$fieldKey] ?? null; + } else { + $result['tidak sesuai'] = $data[$fieldKey] ?? null; + } + } else { + $result[$fieldName] = $data[$fieldName] ?? null; + + if ($extraField) { + $result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null; + } + } + + // Hapus key dengan nilai null untuk memastikan hanya key yang valid yang disimpan + return array_filter($result, fn ($value) => $value !== null); + } + + +} diff --git a/resources/views/surveyor/components/header.blade.php b/resources/views/surveyor/components/header.blade.php index e73b771..e6dc4f7 100644 --- a/resources/views/surveyor/components/header.blade.php +++ b/resources/views/surveyor/components/header.blade.php @@ -180,11 +180,12 @@ : 'tidak sesuai'; $selectedValue = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null; @endphp +
+ style="{{ old('jenis_asset_tidak_sesuai', isset($forminspeksi['asset']['jenis_asset']['tidak sesuai'])) ? '' : 'display: none;' }}"> - {{-- @endif --}} + +
@@ -213,10 +212,10 @@
@foreach ($permohonan->documents as $dokumen) - @php - $alamat = $dokumen; - @endphp - @endforeach + @php + $alamat = $dokumen; + @endphp + @endforeach {{ formatAlamat($dokumen) }} @@ -601,5 +600,15 @@ document.addEventListener('DOMContentLoaded', () => { loadSavedLocationData(); }); + + function handleJenisAssetChange(select) { + const lainnyaInput = document.getElementById('jenis_asset_lainnya'); + if (select.value === 'Lainnya') { + lainnyaInput.style.display = 'block'; + } else { + lainnyaInput.style.display = 'none'; + lainnyaInput.value = ''; // Reset nilai input jika bukan "lainnya" + } + } @include('lpj::surveyor.js.utils') diff --git a/resources/views/surveyor/components/print-out/main.blade.php b/resources/views/surveyor/components/print-out/main.blade.php index af689e7..fc70e3b 100644 --- a/resources/views/surveyor/components/print-out/main.blade.php +++ b/resources/views/surveyor/components/print-out/main.blade.php @@ -293,15 +293,18 @@ @php - $statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai']) - ? 'sesuai' - : 'tidak sesuai'; + $statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai']) ? 'sesuai' : 'tidak sesuai'; $selectedData = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null; + + $lainnya = isset($forminspeksi['asset']['jenis_asset']['Lainnya']) + ? $forminspeksi['asset']['jenis_asset']['Lainnya'] + : null; + @endphp @@ -359,125 +362,125 @@
Jenis Aset : - {{ $selectedData ?? '' }} + {{ $selectedData ?? '' }} {{ $lainnya ?? '' }}
- +
- - - -
-

- STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI -

-
+ + +

+ STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI +

+ + + - +
- @if (@isset($dokumen)) - @foreach ($dokumen->detail as $detail) - @if (isset($detail->dokumen_jaminan)) - - - {{-- --}} - - - @endif - - @if (isset($detail->details)) - @if (json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - @if (!is_null($value) && $value !== '') - - - - - - @endif - @endforeach - @endif - @endif - @endforeach - @endif - - - - @php - // Ambil nilai sesuai dan tidak sesuai - $hubCadebSesuai = $forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null; - $hubCadebTidakSesuai = $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null; - @endphp - - - + @php + // Ambil nilai sesuai dan tidak sesuai + $hubCadebSesuai = $forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null; + $hubCadebTidakSesuai = $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null; + @endphp + + + - + - @php - $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) - ? 'sesuai' - : 'tidak sesuai'; - $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; - @endphp + @php + $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) + ? 'sesuai' + : 'tidak sesuai'; + $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; + @endphp - - - - @endif - - -
{{ $detail->name ?? '' }}:
- {{ formatLabel($key) }} - : - {{ $value }} - @if ($key == 'luas_bangunan' || $key == 'luas_tanah') - m2 - @endif -
Hubungan Pemilik Jaminan dengan Debitur: -
- - -
- - @if (!empty($basicData['hubCadeb'])) - + @if (@isset($dokumen)) + @foreach ($dokumen->detail as $detail) + @if (isset($detail->dokumen_jaminan)) - @php $count = 0; @endphp - @foreach ($basicData['hubCadeb'] as $item) - - @php $count++; @endphp + + {{-- --}} - @if ($count % 3 === 0) - + @endif + + @if (isset($detail->details)) + @if (json_decode($detail->details)) + @foreach (json_decode($detail->details) as $key => $value) + @if (!is_null($value) && $value !== '') + + + + + @endif @endforeach + @endif + @endif + @endforeach + @endif - @if ($count % 3 !== 0) - @for ($i = 0; $i < 3 - ($count % 3); $i++) - - @endfor - @endif - -
- - {{ $detail->name ?? '' }}:
+ {{ formatLabel($key) }} + : + {{ $value }} + @if ($key == 'luas_bangunan' || $key == 'luas_tanah') + m2 + @endif +
+ +
Hubungan Pemilik Jaminan dengan Debitur: +
+ + +
+ + @if (!empty($basicData['hubCadeb'])) + + + @php $count = 0; @endphp + @foreach ($basicData['hubCadeb'] as $item) + + @php $count++; @endphp + + @if ($count % 3 === 0) + + + @endif + @endforeach + + @if ($count % 3 !== 0) + @for ($i = 0; $i < 3 - ($count % 3); $i++) + + @endfor @endif - + +
+ +
+ @endif +
Hubungan Penghuni Jaminan dengan Debitur: - @if (isset($selectedData)) - {{ $selectedData ?? '' }} -
+ Hubungan Penghuni Jaminan dengan Debitur + : + + @if (isset($selectedData)) + {{ $selectedData ?? '' }} + + @endif + + +
@@ -578,8 +581,8 @@ @if (isset($forminspeksi['signature']['kjjp'])) - KJPP + KJPP @endif From a227b8ec29b49d677eaf19ec51b282798edc2714 Mon Sep 17 00:00:00 2001 From: majid76 Date: Sat, 8 Mar 2025 14:11:19 +0700 Subject: [PATCH 09/18] fix(surveyor): perbaikkan upload foto data pembanding --- app/Http/Controllers/SurveyorController.php | 3 +-- resources/views/surveyor/components/data-pembanding.blade.php | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 86aab2c..22a4a14 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -1356,6 +1356,7 @@ class SurveyorController extends Controller try { DB::beginTransaction(); + // dd($request->all()); $maxSize = getMaxFileSize('Foto'); $validator = $request->validate([ 'permohonan_id' => 'required|exists:permohonan,id', @@ -1363,8 +1364,6 @@ class SurveyorController extends Controller 'dokument_id' => 'required', 'name_foto_objek' => 'nullable|string', 'nomor_registrasi' => 'required|string', - 'foto_objek' => 'nullable|jpeg|png|jpg|gif|svg|max:'.$maxSize, - 'foto_objek_pembanding.*' => 'nullable|jpeg|png|jpg|gif|svg|max:'.$maxSize, ]); $tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN']; diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index cbc47ab..c65278a 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -355,8 +355,6 @@ const preview = newCell.querySelector('img'); if (preview) { preview.id = newImageId; - preview.src = ''; - preview.accept = ".jpg,.jpeg,.png"; preview.classList.add('hidden'); input.onchange = function() { const file = this.files[0]; From a9edbe683839e7981d50a82a0477851fe8404e7c Mon Sep 17 00:00:00 2001 From: majid76 Date: Sat, 8 Mar 2025 14:48:50 +0700 Subject: [PATCH 10/18] fix(surveyor): perbaikan nama tanda tangan dan free text lainnya --- .../views/component/signature-pad.blade.php | 2 +- .../surveyor/components/lingkungan.blade.php | 4 ++-- .../components/print-out/lingkungan.blade.php | 13 +++++++++++-- .../components/print-out/tanah.blade.php | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/resources/views/component/signature-pad.blade.php b/resources/views/component/signature-pad.blade.php index edc693c..a9c1c23 100644 --- a/resources/views/component/signature-pad.blade.php +++ b/resources/views/component/signature-pad.blade.php @@ -22,7 +22,7 @@
-

{{ ucfirst($type) }}

+

{{ ucfirst($type) }}

-
@@ -313,7 +313,7 @@ style="{{ old('dekat_tps', $forminspeksi['lingkungan']['dekat_tps'] ?? '') == 'ya' ? 'display:flex;' : 'display:none;' }}">
-
diff --git a/resources/views/surveyor/components/print-out/lingkungan.blade.php b/resources/views/surveyor/components/print-out/lingkungan.blade.php index 715cd1b..dee2338 100644 --- a/resources/views/surveyor/components/print-out/lingkungan.blade.php +++ b/resources/views/surveyor/components/print-out/lingkungan.blade.php @@ -46,6 +46,11 @@ name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) ? 'checked' : '' }}> {{ $item->name }} + + @if ($item->name == 'Lainnya') + {{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['perkerasan_jalan']['lainnya'] . ')' : '' }} + @endif + @endforeach @@ -150,6 +155,10 @@ name, $forminspeksi['lingkungan']['terletak_diarea']['terletak_diarea'] ?? '') ? 'checked' : '' }}> {{ $item->name }} + + @if ($item->name == 'Lainnya') + {{ isset($forminspeksi['lingkungan']['terletak_diarea']['lainnya']) ? ' (' . $forminspeksi['lingkungan']['terletak_diarea']['lainnya'] . ')' : '' }} + @endif @endforeach @@ -198,7 +207,7 @@ - Nama Makam: {{ $forminspeksi['lingkungan']['nama_makam'] ?? '' }} , Jarak Makam: - {{ $forminspeksi['lingkungan']['jarak_makam'] ?? '' }} Km + {{ $forminspeksi['lingkungan']['jarak_makam'] ?? '' }} @endif + @endforeach @@ -147,6 +152,13 @@ name, $forminspeksi['tanah']['ketinggian_tanah']['ketinggian']) ? 'checked' : '' }}> {{ $item->name }} + + @if ($item->name == 'Lebih Tinggi') + {{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi']) ? ' (' . $forminspeksi['tanah']['ketinggian_tanah']['lebih_tinggi'] . ')' : '' }} + @endif + @if ($item->name == 'Lebih Rendah') + {{ isset($forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah']) ? ' (' . $forminspeksi['tanah']['ketinggian_tanah']['lebih_rendah'] . ')' : '' }} + @endif @endforeach @@ -211,6 +223,10 @@ name, $forminspeksi['tanah']['posisi_kavling']['posisi_kavling']) ? 'checked' : '' }}> {{ $item->name }} + + @if ($item->name == 'Lainnya') + {{ isset($forminspeksi['tanah']['posisi_kavling']['lainnya']) ? ' (' . $forminspeksi['tanah']['posisi_kavling']['lainnya'] . ')' : '' }} + @endif @endforeach From bc281e35128d7ab3624193cbc06fc75191d559a1 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 8 Mar 2025 17:47:11 +0700 Subject: [PATCH 11/18] fix(dokumen_jaminan): perbaiki pengambilan dan penyimpanan data dokumen jaminan - Memperbaiki pengecekan kondisi saat mengambil detail dokumen. - Menambahkan penanganan untuk file yang diupload dan yang tidak diubah. - Memastikan nomor dokumen selalu diperbarui, baik saat file diubah atau tidak. - Menghapus dokumen yang tidak ada lagi dari daftar jika ada perubahan. --- .../Controllers/DokumenJaminanController.php | 82 +-- .../views/component/detail-jaminan.blade.php | 104 ++-- .../debitur/components/dokumen.blade.php | 478 ++++++++++-------- .../debitur/components/jaminan.blade.php | 2 +- 4 files changed, 373 insertions(+), 293 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index b552df1..d7bd597 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -104,7 +104,7 @@ $file_name, ); $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; - $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; } } } @@ -249,7 +249,7 @@ 'jenis_legalitas_jaminan_id' => $value, 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : '' + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '' ]; $dokumenJaminan = []; @@ -257,60 +257,75 @@ if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { foreach ($request->dokumen_jaminan[$key] as $index => $file) { - if ($file) { + if ($file instanceof \Illuminate\Http\UploadedFile) { + // Jika file baru diupload $file_name = $file->getClientOriginalName(); $file->storeAs( 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', $file_name, ); $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; - $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; + } elseif (is_string($file) && !empty($file)) { + // Jika file tidak diubah, gunakan path yang sudah ada + $dokumenJaminan[] = $file; + } else { + // Jika file kosong atau null, tambahkan placeholder atau skip + $dokumenJaminan[] = null; // atau skip dengan continue; } + + // Selalu update dokumen_nomor, baik file diubah atau tidak + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; } } + + + // Setelah loop, periksa apakah ada dokumen yang dihapus + $existingDetail = $existingDetails->get($request->detail_dokumen_jaminan_id[$key] ?? null); + + if ($existingDetail) { + $existingDokumen = json_decode($existingDetail->dokumen_jaminan, true) ?? []; + $existingNomor = json_decode($existingDetail->dokumen_nomor, true) ?? []; + + + + // Jika jumlah dokumen berkurang, berarti ada yang dihapus + if (count($existingDokumen) > count($dokumenJaminan)) { + $dokumenJaminan = $existingDokumen; + $dokumenNomor = $existingNomor; + foreach ($request->dokumen_jaminan[$key] as $index => $file) { + if ($file === null) { + // Hapus dokumen yang tidak ada lagi + unset($dokumenJaminan[$index]); + unset($dokumenNomor[$index]); + } elseif (is_string($file) && !empty($file)) { + // Update nomor dokumen untuk file yang tidak diubah + $dokumenNomor[$index] = $request->dokumen_nomor[$key][$index] ?? '-'; + } + } + // Reset array keys + $dokumenJaminan = array_values($dokumenJaminan); + $dokumenNomor = array_values($dokumenNomor); + } + } + + if (!empty($dokumenJaminan)) { $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); - $detailData['dokumen_nomor'] = json_encode($dokumenNomor); + $detailData['dokumen_nomor'] = json_encode($dokumenNomor); } if (isset($request->detail_dokumen_jaminan_id[$key])) { $detailId = $request->detail_dokumen_jaminan_id[$key]; $detailDocument = $existingDetails->get($detailId); - if ($detailDocument) { - // Merge new files with existing ones - if (!empty($dokumenJaminan)) { - $existingFiles = json_decode( - $detailDocument->dokumen_jaminan, - true, - ) ?: []; - $existingNomor = json_decode( - $detailDocument->dokumen_nomor, - true, - ) ?: []; - $mergedFiles = array_merge($existingFiles, $dokumenJaminan); - $mergedNomor = array_merge($existingNomor, $dokumenNomor); - $detailData['dokumen_jaminan'] = json_encode($mergedFiles); - $detailData['dokumen_nomor'] = json_encode($mergedNomor); - } - $detailDocument->update($detailData); - $existingDetails->forget($detailId); - } + $detailDocument->update($detailData); + } else { DetailDokumenJaminan::create($detailData); } } } - // Delete any remaining existing details that weren't updated - foreach ($existingDetails as $detail) { - $files = json_decode($detail->dokumen_jaminan, true) ?: []; - foreach ($files as $file) { - Storage::delete('public/' . $file); - } - $detail->delete(); - } - DB::commit(); return redirect()->route('debitur.jaminan.index', $id)->with( 'success', @@ -342,6 +357,7 @@ $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); + $legalitas = ''; if ($_jenisJaminan) { $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index 3c5b231..fd74707 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -272,73 +272,73 @@ @php $document = $dokumen; @endphp - @foreach($document->detail as $detail) - - - - - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp - @foreach($dokumen_jaminan as $index => $dokumen) + @foreach($document->detail as $detail) - - - @if(isset($detail->details) && json_decode($detail->details)[$index]) - @foreach (json_decode($detail->details)[$index] as $key => $value) + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp + @foreach($dokumen_jaminan as $index => $dokumen) + + @if(isset($detail->details) && isset(json_decode($detail->details)[$index])) + @foreach (json_decode($detail->details)[$index] as $key => $value) + + + + + @endforeach + @endif @endforeach @endif - @endforeach - @endif - - - - - @endforeach + + + + + @endforeach
- - {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} - -
- - {{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }} - - - @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) - - {{ basename($dokumen) }} - - - @endif - - Preview - + + + {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} +
- - {{ str_replace("_"," ",$key) ?? "" }} + {{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }} -

- {{ $value }} -

+ @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + + {{ basename($dokumen) }} + + + @endif + + Preview +
+ + - {{ str_replace("_"," ",$key) ?? "" }} + + +

+ {{ $value }} +

+
- - - keterangan - - -

- {{ $detail->keterangan }} -

-
+ + - keterangan + + +

+ {{ $detail->keterangan }} +

+
diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index bb5d62a..91a9e03 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -255,7 +255,7 @@
@if(isset($document->id)) - @php $n = 0; @endphp + @php $n = 0; $p_index = 0; @endphp @foreach($document->detail as $detail)
@@ -282,129 +282,177 @@
-
+
-
-
- - - -
-
-
- @if(isset($detail->dokumen_jaminan)) - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp -
- @foreach($dokumen_jaminan as $index => $dokumen) -
- @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+
+ + + + + + {{ basename($dokumen) }} + + + + +
+ + @if($detail->details) + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + $fieldValue = json_decode($detail->details)[$index]->{$customField->name} ?? ''; + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach @endif - - {{ basename($dokumen) }} - - + @else + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach + @endif + @endif +
+ @php $p_index++; @endphp + @endforeach +
+
+ +
+ @else +
+
+ + + + +
+ @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
@endforeach -
- @endif + @endif +
+
+ +
+ @php $p_index++; @endphp @endif
-
- @if($detail->details) - @if($detail->jenisLegalitasJaminan->custom_fields) - @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
- @php - $customField = getCustomField($key); - $fieldValue = json_decode($detail->details)->{$customField->name} ?? ''; - @endphp - -
- @switch($customField->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch -
-
- @endforeach - @endif - @else - @if($detail->jenisLegalitasJaminan->custom_fields) - @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
- @php - $customField = getCustomField($key); - @endphp - -
- @switch($customField->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch -
-
- @endforeach - @endif - @endif -
@php $n++; @endphp @endforeach + @if($legalitas) @foreach($legalitas as $item) -
- - -
- -
- -
- -
-
- -
- -
-
-
- - - -
-
-
-
-
- - @if($item->custom_fields) - @foreach($item->custom_fields as $field) - @php $custom_field = getCustomField($field) @endphp +
+
-
+ +
+
- @switch($custom_field->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch +
- @endforeach - @endif -
- -
- +
+ +
+
+
+ + +
+ + @if($item->custom_fields) + @foreach($item->custom_fields as $field) + @php $custom_field = getCustomField($field) @endphp +
+ +
+ @switch($custom_field->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach + @endif +
+
+
+
+
+ +
+ +
+ +
+ +
- @php $n++; @endphp + @php $n++;$p_index++; @endphp @endforeach @endif + @endif
@@ -608,30 +663,31 @@ -
+
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} -
-
+ +
- +
+ ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` +
+ +
+ ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} +
+
+ `).join('') : ""}
- ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` -
- -
- ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} -
-
- `).join('') : ""} - -
+
+ +
@@ -648,14 +704,23 @@ .catch(error => console.error("Error:", error)); } - function addFileInput(index) { + function addFileInput(index, pindex = null) { const documentContainer = document.getElementById(`document-container-${index}`); - const customFields = documentContainer.querySelectorAll('.custom-field'); - const container = documentContainer.querySelector('#document_container'); + let container = null; + const parentContainer = documentContainer.querySelector('#document_container'); + if (pindex !== null) { + + container = parentContainer.querySelector(`#document_container_${pindex}`); + } else { + container = documentContainer.querySelector('#document_container'); + } + + const customFields = container.querySelectorAll('.custom-field'); + // Get the current number of custom field sets const currentFieldSets = container.querySelectorAll('.custom-field-set').length; - const newFieldIndex = currentFieldSets+1; + const newFieldIndex = currentFieldSets + 1; const newInput = document.createElement("div"); newInput.className = "flex flex-col w-full gap-2 mb-4 custom-field-set"; @@ -677,23 +742,22 @@ newInput.innerHTML = `
-
-   -
- +
- ${customFieldsHtml} + ${customFieldsHtml} + `; - container.appendChild(newInput); + parentContainer.appendChild(newInput); } function removeFileInput(button) { - button.closest(".flex.flex-col.w-full.gap-2.mb-4").remove(); + button.closest(".custom-field-set").remove(); + } function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) { diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index 28ff127..1af9f4b 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -110,7 +110,7 @@
@if(isset($detail->details)) - @if(json_decode($detail->details)[$index]) + @if(isset(json_decode($detail->details)[$index])) @foreach (json_decode($detail->details)[$index] as $key => $value)
From 211e44f804b5e7b408ae886d11c03f4d89e8998d Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 8 Mar 2025 17:52:02 +0700 Subject: [PATCH 12/18] fix(penawaran): perbaiki pengolahan luas tanah dan bangunan pada dokumen - Mengubah cara pengambilan dan penjumlahan luas tanah dan bangunan. - Memastikan nilai luas tanah dan bangunan ditampilkan dengan benar. - Mengoptimalkan pengolahan data detail dokumen untuk meningkatkan kejelasan. --- .../debitur/components/dokumen.blade.php | 2 +- .../views/penawaran/kirimEmailKJPP.blade.php | 62 ++++++++++--------- .../views/penawaran/surat_tender.blade.php | 62 ++++++++++--------- .../penawaran/surat_tender_download.blade.php | 62 ++++++++++--------- .../penawaran/surat_tender_kjpp.blade.php | 62 ++++++++++--------- .../surat_tender_kjpp_download.blade.php | 62 ++++++++++--------- 6 files changed, 171 insertions(+), 141 deletions(-) diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 91a9e03..6f35db5 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -748,7 +748,7 @@
- ${customFieldsHtml} + ${customFieldsHtml} `; diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php index 3f452b0..791212f 100644 --- a/resources/views/penawaran/kirimEmailKJPP.blade.php +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -126,35 +126,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender.blade.php b/resources/views/penawaran/surat_tender.blade.php index fe651cd..d7ad287 100644 --- a/resources/views/penawaran/surat_tender.blade.php +++ b/resources/views/penawaran/surat_tender.blade.php @@ -109,35 +109,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_download.blade.php b/resources/views/penawaran/surat_tender_download.blade.php index 42180b1..db007cc 100644 --- a/resources/views/penawaran/surat_tender_download.blade.php +++ b/resources/views/penawaran/surat_tender_download.blade.php @@ -124,35 +124,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_kjpp.blade.php b/resources/views/penawaran/surat_tender_kjpp.blade.php index 37e54f0..8402599 100644 --- a/resources/views/penawaran/surat_tender_kjpp.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp.blade.php @@ -107,35 +107,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_kjpp_download.blade.php b/resources/views/penawaran/surat_tender_kjpp_download.blade.php index 0c14894..7bd9b0b 100644 --- a/resources/views/penawaran/surat_tender_kjpp_download.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp_download.blade.php @@ -126,35 +126,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach From 5932192d9253fff208c1e04e9d86e996e368e414 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 5 Mar 2025 16:25:43 +0700 Subject: [PATCH 13/18] fix(dokumen): perbaikan pengambilan detail dokumen jaminan - Memperbaiki pengambilan data `details` pada `DokumenJaminanController`. - Mengubah indeks pengambilan `custom_field` dari `$value` menjadi `$key`. - Memperbaiki tampilan detail dokumen jaminan di view `jaminan.blade.php`. - Menambahkan penanganan untuk menampilkan nomor dokumen dan detail yang sesuai. --- .../Controllers/DokumenJaminanController.php | 2 +- .../debitur/components/dokumen.blade.php | 173 +++++++++++------- .../debitur/components/jaminan.blade.php | 67 ++++--- 3 files changed, 145 insertions(+), 97 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 04feb22..b552df1 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -90,7 +90,7 @@ 'jenis_legalitas_jaminan_id' => $value, 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : '' + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '' ]; $dokumenJaminan = []; diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 3f5fb73..3bfb80b 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -282,50 +282,52 @@
- -
- -
-
-
- - - -
-
-
- - @if(isset($detail->dokumen_jaminan)) - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp -
- @foreach($dokumen_jaminan as $index => $dokumen) -
- @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - -
- @endforeach +
+
+ +
+
+
+ + +
+
+
+ + @if(isset($detail->dokumen_jaminan)) + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+ @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + +
+ @endforeach +
+ @endif @endif - @endif +
+
@if($detail->details) @if($detail->jenisLegalitasJaminan->custom_fields) @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
+
@php $customField = getCustomField($key); $fieldValue = json_decode($detail->details)->{$customField->name} ?? ''; @@ -600,33 +602,36 @@
- -
- -
-
- ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} -
-
- - - +
+
+ +
+
+ ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} +
+
+ + + +
-
- ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` -
- -
- ${getCustomFieldInput(field.type, field.name, item.details, item.jenis_legalitas_jaminan_id)} + ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` +
+ +
+ ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} +
+ `).join('') : ""} + +
- `).join('') : ""}
-
-
-
- @if(isset($detail->details)) - @if(json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) -
- - {{ str_replace("_"," ",$key) ?? "" }} - -

- {{ $value ?? "" }} -

-
-
-
- @endforeach - @endif + @endforeach @endif +
keterangan From d52edb9481b2970f73313c96ec0a55503f2a3094 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 7 Mar 2025 16:50:09 +0700 Subject: [PATCH 14/18] fix(dokumen_jaminan): perbaiki pengambilan data detail dokumen - Memperbaiki logika pengambilan data 'details' pada Dokumen Jaminan. - Mengubah cara pengolahan data luas tanah dan luas bangunan untuk akurasi. - Memperbaiki tampilan data pada email dan komponen jaminan. --- .../views/component/detail-jaminan.blade.php | 179 +++++++++--------- .../debitur/components/dokumen.blade.php | 1 + .../debitur/components/jaminan.blade.php | 1 + .../views/penawaran/kirimEmail.blade.php | 62 +++--- 4 files changed, 126 insertions(+), 117 deletions(-) diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index edba9aa..3c5b231 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -68,36 +68,36 @@ {{ $penawaran->tujuanPenilaianKjpp->name }}
- @else + @else -
-

- Tujan Permohonan: -

- +
+

+ Tujan Permohonan: +

+ {{ $permohonan->tujuanPenilaian->name }} -
+
-
-

- Nilai Plafond: -

- +
+

+ Nilai Plafond: +

+ {{ $permohonan->nilaiPlafond->name }} -
+
-
-

- Status Bayar: -

- +
+

+ Status Bayar: +

+ {{ str_replace('_', ' ', $permohonan->status_bayar) }} -
- @endif +
+ @endif
@@ -263,84 +263,82 @@
@endif + +
Download Semua Dokumen - @foreach ($dokumen->detail as $detail) - - - - - @if(isset($detail->details)) - @if(json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - - - - - @endforeach - @endif - @endif - - - + + - @if (isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) - ? json_decode($detail->dokumen_jaminan) - : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) - ? json_decode($detail->dokumen_nomor) - : ($detail->dokumen_nomor - ? [$detail->dokumen_nomor] - : []); - @endphp - @foreach ($dokumen_jaminan as $index => $dokumen) -
- @if (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo'])) - @if (!empty($dokumen_nomor)) - Nomor Dokumen : - {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - - @endif - Preview -
-
- @endforeach + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp + @foreach($dokumen_jaminan as $index => $dokumen) + + + + - - - - - - + @if(isset($detail->details) && json_decode($detail->details)[$index]) + @foreach (json_decode($detail->details)[$index] as $key => $value) + + + + + @endforeach + @endif @endforeach + @endif + + + + + + @endforeach
- {{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - - {{ $detail->name ?? '' }} -
- {{formatLabel($key)}} - - {{ $value ?? "" }} -
- Dokumen Jaminan - + @php $document = $dokumen; @endphp + @foreach($document->detail as $detail) +
+ + {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} + +
+ + {{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }} + + + @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + + {{ basename($dokumen) }} + + @endif + + Preview + +
- Keterangan - - {{ $detail->keterangan ?? '' }} -
+ + - {{ str_replace("_"," ",$key) ?? "" }} + + +

+ {{ $value }} +

+
+ + - keterangan + + +

+ {{ $detail->keterangan }} +

+
@@ -349,6 +347,9 @@
@if (!isset($status))
+ @include('lpj::component.history-permohonan') + + @endif @include('lpj::component.pdfviewer') diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 3bfb80b..bb5d62a 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -506,6 +506,7 @@ + @push('scripts') {{--Pemilik Jaminan--}} diff --git a/resources/views/surveyor/components/print-out/print.blade.php b/resources/views/surveyor/components/print-out/print.blade.php deleted file mode 100644 index a246b27..0000000 --- a/resources/views/surveyor/components/print-out/print.blade.php +++ /dev/null @@ -1,704 +0,0 @@ - - - - - - - - - Laporan Penilai Jaminan - - - - -@php - $data = ''; - $dokument = null; - foreach ($permohonan->documents as $dokumen) { - $data .= $dokumen->jenisJaminan->name . ', '; - $dokument = $dokumen; - } - $data = rtrim($data, ', '); - - $senior_officer = null; - if ($permohonan->debiture && $permohonan->documents) { - foreach ($permohonan->documents as $dokumen) { - $penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first(); - $teams = $permohonan->region->teams; - - if ($teams) { - foreach ($teams as $team) { - $team_users = $team->teamsUsers; - // print_r($team_users); - if ($team_users) { - foreach ($team_users as $team_user) { - $user = $team_user->user; - - if ($user && $user->hasRole('senior-officer')) { - $senior_officer = $user; - break 3; - } - } - } - } - } - } - } -@endphp - - - - - - - - -
-

- Tujuan Penilaian -

-
- - - - - {{-- - - - - - - - --}} - - {{-- - - - - - - - - - - - - - - - - - - --}} - - - {{-- - - - --}} - - - - - - - - {{--
- - - - - - - - - - - - - - - - -
Cabang/Pemohon: - {{ $permohonan->debiture->branch->name ?? '' }} -
Tujuan Penilai: - {{ $permohonan->jenisFasilitasKredit->name ?? '' }}
Ao:{{ $permohonan->user->name ?? '' }}
-
- - - --}} - - -
- @if (isset($basicData['tujuanPenilaian'])) - - - @foreach ($basicData['tujuanPenilaian'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
- @endif - - - - - - - - - - - - - -
Permintaan (A/O. Tlp/Hp){{ $permohonan->user->name }}Tanggal{{ formatTanggalIndonesia($permohonan->created_at) }}
Nama Debitur/ Wakil Debitur{{ $permohonan->debiture->name ?? '' }} - @if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan'])) - @foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item) - {{ $item }} - @endforeach - @endif - Kunjungan Tanggal{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}
-
- - - {{--
- B - - IDENTITAS DEBITUR -
- - - - - - - -
Nama Debitur{{ $permohonan->debiture->name ?? '' }}
-
- C - - JENIS DAN LOKASI JAMINAN + KORDINAT -
- - @if (isset($basicData['jenisJaminan'])) - - - - @foreach ($basicData['jenisJaminan'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
- @endif - - - - - - - - - - - - - - - - - - - - - - -
Terletak di {{ $alamat['address'] ?? '' }}
Kelurahan{{ $alamat['village_code'] ?? '' }}
Kecamatan{{ $alamat['district_code'] ?? '' }}
Kotamadya {{ $alamat['city_code'] ?? '' }}
Propinsi{{ $alamat['province_code'] ?? '' }}
- - - - - -
Titik Kordinat{{ isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '' }} , - {{ isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '' }}
-
- D - - STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI -
- - - - @if (@isset($dokumen)) - @foreach ($dokumen->detail as $detail) - @if (isset($detail->dokumen_jaminan)) - - - - - - - @endif - - @if (isset($detail->details)) - @if (json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - @if (!is_null($value) && $value !== '') - - - - - @endif - @endforeach - @endif - @endif - @endforeach - @endif - - - - - - - - - @php - // Ambil nilai hub_cadeb langsung - $hubCadeb = isset($forminspeksi['asset']['hub_cadeb']) - ? $forminspeksi['asset']['hub_cadeb'] - : null; - - // Jika nilai adalah array dengan key 'sesuai', ambil nilainya - if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) { - $hubCadeb = $hubCadeb['sesuai']; - } - @endphp - - - - - - @php - $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) - ? 'sesuai' - : 'tidak sesuai'; - $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; - @endphp - - - - -
{{ $detail->name ?? '' }}
- @if (isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) - ? json_decode($detail->dokumen_jaminan) - : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) - ? json_decode($detail->dokumen_nomor) - : ($detail->dokumen_nomor - ? [$detail->dokumen_nomor] - : []); - @endphp - - @foreach ($dokumen_jaminan as $index => $dokumen) -
- @if (!empty($dokumen_nomor[$index])) - {{ $dokumen_nomor[$index] }} - @endif -
- @endforeach - @endif -
- {{ ucwords(str_replace('_', ' ', $key)) ?? '' }} - - {{ $value }} - @if ($key == 'luas_bangunan' || $key == 'luas_tanah') - m2 - @endif -
Atas Nama{{ $dokument->pemilik->name ?? '' }}
Hubungan Pemilik Jaminan dengan Debitur - - @if (isset($basicData['hubCadeb'])) - - @php $count = 0; @endphp - - @foreach ($basicData['hubCadeb'] as $item) - - @php $count++; @endphp - - @if ($count % 3 === 0) - - - @endif - @endforeach - - @if ($count % 3 !== 0) - @for ($i = 0; $i < 3 - ($count % 3); $i++) - - @endfor - @endif - -
- -
- @endif -
Hubungan Penghuni Jaminan dengan Debitur - @if (isset($selectedData)) - - - - -
- {{ $selectedData ?? '' }} -
- @endif -
-
- G - - ASURANSI -
- - - - - - - - - - -
- Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }} -
- TTD -
- - - @if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image'])) - @php - $imagePath = $forminspeksi['signature']['penilai']['image']; - - $isBase64 = str_starts_with($imagePath, 'data:image'); - - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } - - @endphp - - @endif - - @if (isset($forminspeksi['signature']['cabang'])) - @php - $imagePath = $forminspeksi['signature']['cabang']['image']; - - $isBase64 = str_starts_with($imagePath, 'data:image'); - - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } - - @endphp - - @endif - - - @if (isset($forminspeksi['signature']['debitur'])) - - @endif - - - @if (isset($forminspeksi['signature']['kjjp'])) - - @endif - - - - - @if (isset($forminspeksi['signature']['penilai']['name'])) - - @endif - @if (isset($forminspeksi['signature']['cabang']['name'])) - - @endif - @if (isset($forminspeksi['signature']['debitur']['name'])) - - @endif - @if (isset($forminspeksi['signature']['kjjp']['name'])) - - @endif - -
- - - - - Debitur/Perwakilan - - KJPP -
- {{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }} -
- {{ ucwords(strtolower('PENILAI')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }} -
- {{ ucwords(strtolower('CABANG')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }} -
- {{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['kjjp']['name'])) }} -
- {{ strtoupper('K.J.P.P') }} -
-
--}} - - - - - - diff --git a/resources/views/surveyor/components/tanah.blade.php b/resources/views/surveyor/components/tanah.blade.php index 3e856f6..3c8391b 100644 --- a/resources/views/surveyor/components/tanah.blade.php +++ b/resources/views/surveyor/components/tanah.blade.php @@ -10,28 +10,22 @@
+ @if (isset($permohonan->documents)) @foreach ($permohonan->documents as $item) @php - $luas_tanah = 0; + $total_luas_tanah = 0; $jenis_legalitas_jaminan_id = 0; - if ($item->detail) { - foreach ($item->detail as $luas) { - if (isset($luas->name) && $luas->jenis_legalitas_jaminan_id === 1) { - $jenis_legalitas_jaminan_id = $luas->jenis_legalitas_jaminan_id; - $details = json_decode($luas->details, true); - $luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 0; - break; - } - } + if (isset($item->detail)) { + $total_luas_tanah = calculateTotalLuas($item->detail, 'luas_tanah', 1); } @endphp - - -

{{ $luas_tanah }} m2

+ + +

{{ $total_luas_tanah }} m2

@endforeach @endif
@@ -283,14 +277,14 @@ {{ old('tusuk_sate') == 'Ya' || (isset($forminspeksi['tanah']['tusuk_sate']['Ya']) && $forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'checked' : '' }}> Ya - @php - $statusKey = isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'Ya' : 'Tidak'; - $selectedData = $forminspeksi['tanah']['tusuk_sate'][$statusKey] ?? null; - @endphp - + @php + $statusKey = isset($forminspeksi['tanah']['tusuk_sate']['Ya']) ? 'Ya' : 'Tidak'; + $selectedData = $forminspeksi['tanah']['tusuk_sate'][$statusKey] ?? null; + @endphp +
diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index bb5d62a..91a9e03 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -255,7 +255,7 @@
@if(isset($document->id)) - @php $n = 0; @endphp + @php $n = 0; $p_index = 0; @endphp @foreach($document->detail as $detail)
@@ -282,129 +282,177 @@
-
+
-
-
- - - -
-
-
- @if(isset($detail->dokumen_jaminan)) - @if(isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); - @endphp -
- @foreach($dokumen_jaminan as $index => $dokumen) -
- @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+
+ + + + + + {{ basename($dokumen) }} + + + + +
+ + @if($detail->details) + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + $fieldValue = json_decode($detail->details)[$index]->{$customField->name} ?? ''; + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach @endif - - {{ basename($dokumen) }} - - + @else + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach + @endif + @endif +
+ @php $p_index++; @endphp + @endforeach +
+
+ +
+ @else +
+
+ + + + +
+ @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ @php + $customField = getCustomField($key); + @endphp + +
+ @switch($customField->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
@endforeach -
- @endif + @endif +
+
+ +
+ @php $p_index++; @endphp @endif
-
- @if($detail->details) - @if($detail->jenisLegalitasJaminan->custom_fields) - @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
- @php - $customField = getCustomField($key); - $fieldValue = json_decode($detail->details)->{$customField->name} ?? ''; - @endphp - -
- @switch($customField->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch -
-
- @endforeach - @endif - @else - @if($detail->jenisLegalitasJaminan->custom_fields) - @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) -
- @php - $customField = getCustomField($key); - @endphp - -
- @switch($customField->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch -
-
- @endforeach - @endif - @endif -
@php $n++; @endphp @endforeach + @if($legalitas) @foreach($legalitas as $item) -
- - -
- -
- -
- -
-
- -
- -
-
-
- - - -
-
-
-
-
- - @if($item->custom_fields) - @foreach($item->custom_fields as $field) - @php $custom_field = getCustomField($field) @endphp +
+
-
+ +
+
- @switch($custom_field->type) - @case('text') - - @break - @case('number') - - @break - @case('date') - - @break - @case('textarea') - - @break - @case('select') - - @break - @default - - @endswitch +
- @endforeach - @endif -
- -
- +
+ +
+
+
+ + +
+ + @if($item->custom_fields) + @foreach($item->custom_fields as $field) + @php $custom_field = getCustomField($field) @endphp +
+ +
+ @switch($custom_field->type) + @case('text') + + @break + @case('number') + + @break + @case('date') + + @break + @case('textarea') + + @break + @case('select') + + @break + @default + + @endswitch +
+
+ @endforeach + @endif +
+
+
+
+
+ +
+ +
+ +
+ +
- @php $n++; @endphp + @php $n++;$p_index++; @endphp @endforeach @endif + @endif
@@ -608,30 +663,31 @@ -
+
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""} -
-
+ +
- +
+ ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` +
+ +
+ ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} +
+
+ `).join('') : ""}
- ${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => ` -
- -
- ${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)} -
-
- `).join('') : ""} - -
+
+ +
@@ -648,14 +704,23 @@ .catch(error => console.error("Error:", error)); } - function addFileInput(index) { + function addFileInput(index, pindex = null) { const documentContainer = document.getElementById(`document-container-${index}`); - const customFields = documentContainer.querySelectorAll('.custom-field'); - const container = documentContainer.querySelector('#document_container'); + let container = null; + const parentContainer = documentContainer.querySelector('#document_container'); + if (pindex !== null) { + + container = parentContainer.querySelector(`#document_container_${pindex}`); + } else { + container = documentContainer.querySelector('#document_container'); + } + + const customFields = container.querySelectorAll('.custom-field'); + // Get the current number of custom field sets const currentFieldSets = container.querySelectorAll('.custom-field-set').length; - const newFieldIndex = currentFieldSets+1; + const newFieldIndex = currentFieldSets + 1; const newInput = document.createElement("div"); newInput.className = "flex flex-col w-full gap-2 mb-4 custom-field-set"; @@ -677,23 +742,22 @@ newInput.innerHTML = `
-
-   -
- +
- ${customFieldsHtml} + ${customFieldsHtml} + `; - container.appendChild(newInput); + parentContainer.appendChild(newInput); } function removeFileInput(button) { - button.closest(".flex.flex-col.w-full.gap-2.mb-4").remove(); + button.closest(".custom-field-set").remove(); + } function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) { diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index 28ff127..1af9f4b 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -110,7 +110,7 @@
@if(isset($detail->details)) - @if(json_decode($detail->details)[$index]) + @if(isset(json_decode($detail->details)[$index])) @foreach (json_decode($detail->details)[$index] as $key => $value)
From c77a95addfb7e3b7229d2dcfbdabd1d5f307f8d1 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 8 Mar 2025 17:52:02 +0700 Subject: [PATCH 17/18] fix(penawaran): perbaiki pengolahan luas tanah dan bangunan pada dokumen - Mengubah cara pengambilan dan penjumlahan luas tanah dan bangunan. - Memastikan nilai luas tanah dan bangunan ditampilkan dengan benar. - Mengoptimalkan pengolahan data detail dokumen untuk meningkatkan kejelasan. --- .../debitur/components/dokumen.blade.php | 2 +- .../views/penawaran/kirimEmailKJPP.blade.php | 62 ++++++++++--------- .../views/penawaran/surat_tender.blade.php | 62 ++++++++++--------- .../penawaran/surat_tender_download.blade.php | 62 ++++++++++--------- .../penawaran/surat_tender_kjpp.blade.php | 62 ++++++++++--------- .../surat_tender_kjpp_download.blade.php | 62 ++++++++++--------- 6 files changed, 171 insertions(+), 141 deletions(-) diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 91a9e03..6f35db5 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -748,7 +748,7 @@
- ${customFieldsHtml} + ${customFieldsHtml} `; diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php index 3f452b0..791212f 100644 --- a/resources/views/penawaran/kirimEmailKJPP.blade.php +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -126,35 +126,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender.blade.php b/resources/views/penawaran/surat_tender.blade.php index fe651cd..d7ad287 100644 --- a/resources/views/penawaran/surat_tender.blade.php +++ b/resources/views/penawaran/surat_tender.blade.php @@ -109,35 +109,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_download.blade.php b/resources/views/penawaran/surat_tender_download.blade.php index 42180b1..db007cc 100644 --- a/resources/views/penawaran/surat_tender_download.blade.php +++ b/resources/views/penawaran/surat_tender_download.blade.php @@ -124,35 +124,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_kjpp.blade.php b/resources/views/penawaran/surat_tender_kjpp.blade.php index 37e54f0..8402599 100644 --- a/resources/views/penawaran/surat_tender_kjpp.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp.blade.php @@ -107,35 +107,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach diff --git a/resources/views/penawaran/surat_tender_kjpp_download.blade.php b/resources/views/penawaran/surat_tender_kjpp_download.blade.php index 0c14894..7bd9b0b 100644 --- a/resources/views/penawaran/surat_tender_kjpp_download.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp_download.blade.php @@ -126,35 +126,41 @@ @endphp @foreach ($permohonan->documents as $document) - @foreach ($document->detail as $detail) - @php - $details = json_decode($detail->details); - @endphp + @foreach ($document->detail as $index => $detail) + @if($detail->details) + @php $luastanah = $luasbangunan = null; @endphp + @foreach (json_decode($detail->details) as $key => $value) + @foreach($value as $k => $v) + @if($k=='luas_tanah') + @php + $luastanah += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @if($k=='luas_bangunan') + @php + $luasbangunan += preg_replace('/[^0-9.]/', '', str_replace('m2', '', $v)); + @endphp + @endif + @endforeach + @endforeach + + @if (isset($luastanah) && isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: {{ $luastanah }} m2 / {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @elseif (isset($luastanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : {{ $luastanah }} m2 +
+ @php $n++; @endphp + @elseif (isset($luasbangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: {{ $luasbangunan }} m2 +
+ @php $n++; @endphp + @endif - @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah / Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 - / - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_tanah)) - {{ $n }}. {{ $detail->name }}
- Luas Tanah : - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} - m2 -
- @php $n++; @endphp - @elseif (isset($details->luas_bangunan)) - {{ $n }}. {{ $detail->name }}
- Luas Bangunan: - {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} - m2 -
- @php $n++; @endphp @endif @endforeach @endforeach From 9619b746955e9ec7a377537ce68b0eb14d4e5902 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 8 Mar 2025 21:27:25 +0700 Subject: [PATCH 18/18] feat(jenis-legalitas-jaminan): tambahkan endpoint untuk mengambil custom fields - Menambahkan metode `getCustomFields` pada `JenisLegalitasJaminanController` untuk mengembalikan custom fields berdasarkan ID. - Memperbarui tampilan untuk menggunakan ID jenis legalitas jaminan saat menambahkan input file. - Mengubah fungsi `addFileInput` untuk menerima ID jenis legalitas jaminan dan mengambil custom fields yang relevan. - Memperbarui rute untuk menambahkan endpoint baru yang mengarah ke metode `getCustomFields`. --- .../JenisLegalitasJaminanController.php | 12 +++ .../debitur/components/dokumen.blade.php | 90 +++++++++++-------- routes/web.php | 1 + 3 files changed, 66 insertions(+), 37 deletions(-) diff --git a/app/Http/Controllers/JenisLegalitasJaminanController.php b/app/Http/Controllers/JenisLegalitasJaminanController.php index b087589..48ec006 100644 --- a/app/Http/Controllers/JenisLegalitasJaminanController.php +++ b/app/Http/Controllers/JenisLegalitasJaminanController.php @@ -150,4 +150,16 @@ { return Excel::download(new JenisLegalitasJaminanExport, 'jenis_legalitas_jaminan.xlsx'); } + + public function getCustomFields($id) + { + $jenisLegalitasJaminan = JenisLegalitasJaminan::findOrFail($id); + if(!$jenisLegalitasJaminan->custom_fields) { + return response()->json([]); + } + + $customFields = CustomField::whereIn('id', $jenisLegalitasJaminan->custom_fields)->get(); + + return response()->json($customFields); + } } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 6f35db5..2debb71 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -395,7 +395,7 @@ @endforeach
- +
@else
@@ -445,7 +445,7 @@ @endif
- +
@php $p_index++; @endphp @endif @@ -536,7 +536,7 @@
- +
@@ -619,6 +619,42 @@ {{--Legalitas Jaminan--}}