diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 5262587..347d9c7 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -430,7 +430,8 @@ function getWilayahName($code, $type) } -function formatLabel($key) { +function formatLabel($key) +{ static $labelCache = []; if (isset($labelCache[$key])) { @@ -468,3 +469,35 @@ function calculateSLA($permohonan, $type) return $slaMap[$type] ?? null; } + + +/** + * Menghitung total nilai berdasarkan key dan jenis legalitas. + * + * @param array $detailsArray + * @param string $key + * @param int $jenisLegalitas + * @return int + */ +function calculateTotalLuas($detailsArray, $key, $jenisLegalitas) +{ + $total = 0; + + if ($detailsArray) { + foreach ($detailsArray as $item) { + if (isset($item->jenis_legalitas_jaminan_id) && $item->jenis_legalitas_jaminan_id === $jenisLegalitas) { + $details = json_decode($item->details, true); + + if (is_array($details)) { + foreach ($details as $detail) { + if (isset($detail[$key])) { + $total += (int) $detail[$key]; + } + } + } + } + } + } + + return $total; +} diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 04feb22..d7bd597 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 = []; @@ -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/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/app/Http/Controllers/LaporanExternalController.php b/app/Http/Controllers/LaporanExternalController.php index 56b4763..eb5ba19 100644 --- a/app/Http/Controllers/LaporanExternalController.php +++ b/app/Http/Controllers/LaporanExternalController.php @@ -151,7 +151,7 @@ class LaporanExternalController extends Controller $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['permohonan.debiture','permohonan.penawaran.tujuanPenilaianKjpp'])->get(); + $data = $query->with(['permohonan.debiture','permohonan.penawaran.tujuanPenilaianKjpp','permohonan.dokumenjaminan.jenisjaminan'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index a9d0cec..0afcc21 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -1344,6 +1344,8 @@ class PenilaiController extends Controller // return $pdf; $cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan); $pdf->setPaper('A4', 'portrait'); + $pdf->set_option('isHtml5ParserEnabled', true); + $pdf->set_option('isPhpEnabled', true); return response($pdf->output(), 200) ->header('Content-Type', 'application/pdf') ->header('Content-Disposition', 'inline; filename="Laporan_' . $tipeLaporan . '_' . $permohonan->debiture->name . '_' . $cleanNomorLaporan . '.pdf"'); @@ -1371,6 +1373,8 @@ class PenilaiController extends Controller // return $pdf; $cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan); $pdf->setPaper('A4', 'portrait'); + $pdf->set_option('isHtml5ParserEnabled', true); + $pdf->set_option('isPhpEnabled', true); return $pdf->download('Laporan_' . $tipeLaporan . '_' . $permohonan->debiture->name . '_' . $cleanNomorLaporan . '_data.pdf'); } } catch (\Exception $e) { diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 86aab2c..07d81a7 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -2309,6 +2309,870 @@ 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 @@ -2599,7 +3463,8 @@ class SurveyorController extends Controller // Tentukan nama file PDF $namaDebiture = $permohonan->debiture->name . '-' . $permohonan->nomor_registrasi; $fileName = 'inspeksi-' . $namaDebiture . '-data.pdf'; - + $pdf->set_option('isHtml5ParserEnabled', true); + $pdf->set_option('isPhpEnabled', true); return $pdf->stream($fileName); } diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index edba9aa..fd74707 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 -
| - {{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - | -- {{ $detail->name ?? '' }} + | + + {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }} + | |
| - {{formatLabel($key)}} - | -- {{ $value ?? "" }} - | -||
| - 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 (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo']))
- @if (!empty($dokumen_nomor))
- Nomor Dokumen :
- {{ $dokumen_nomor[$index] }}
- @endif
-
- {{ basename($dokumen) }}
-
-
- @endif
- Preview
-
- + @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) + | ||
| + + {{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }} + + | ++ @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + + {{ basename($dokumen) }} + + + @endif + + Preview + + | +||
| + + - {{ str_replace("_"," ",$key) ?? "" }} + + | +
+ + {{ $value }} + + |
+ ||
| - Keterangan + | + + - keterangan + | -- {{ $detail->keterangan ?? '' }} + |
+ + {{ $detail->keterangan }} + |
| {{ $detail->name ?? '' }} | +|||
| + {{ formatLabel($key) }} + | +: | ++ {{ $item }} + @if ($key == 'luas_bangunan' || $key == 'luas_tanah') + m2 + @endif + | +|