diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index b0e5732..2e90f8f 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -557,10 +557,10 @@ class SurveyorController extends Controller $dataPembanding = []; $pembandingCount = count($request->input('address_pembanding', [])); $fotoPembanding = $request->file('foto_objek_pembanding') ?? []; - + for ($i = 0; $i < $pembandingCount; $i++) { $pembanding = $this->formatSinglePembanding($request, $i); - + // Penanganan foto pembanding if (isset($fotoPembanding[$i]) && $fotoPembanding[$i]->isValid()) { $pembanding['foto_objek'] = $this->handleupdateOrDeleteFile( @@ -569,34 +569,34 @@ class SurveyorController extends Controller "pembanding_{$i}" ); } - + $dataPembanding[] = $pembanding; } - + return $dataPembanding; } private function handleupdateOrDeleteFile($file, $type, $prefix) -{ - try { - if ($file) { - // Generate nama file unik - $fileName = $prefix . '_' . uniqid() . '_' . time() . '.' . $file->getClientOriginalExtension(); - $path = "{$type}/" . date('Y/m'); - Storage::makeDirectory("public/{$path}"); - $filePath = $file->storeAs("public/{$path}", $fileName); - return str_replace('public/', '', $filePath); - } - - return null; - - } catch (\Exception $e) { - \Log::error('File upload error: ' . $e->getMessage()); - throw new \Exception("Gagal mengupload file: " . $e->getMessage()); - } -} + { + try { + if ($file) { + // Generate nama file unik + $fileName = $prefix . '_' . uniqid() . '_' . time() . '.' . $file->getClientOriginalExtension(); + $path = "{$type}/" . date('Y/m'); + Storage::makeDirectory("public/{$path}"); + $filePath = $file->storeAs("public/{$path}", $fileName); + return str_replace('public/', '', $filePath); + } + + return null; + + } catch (\Exception $e) { + \Log::error('File upload error: ' . $e->getMessage()); + throw new \Exception("Gagal mengupload file: " . $e->getMessage()); + } + } + - private function formatSinglePembanding($request, $index) { $fields = [ @@ -606,16 +606,16 @@ class SurveyorController extends Controller 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', 'kordinat_lat', 'kordinat_lng', 'jenis_aset', ]; - + $pembanding = []; foreach ($fields as $field) { $inputName = "{$field}_pembanding"; $pembanding[$field] = $request->input($inputName)[$index] ?? null; } - + // Inisialisasi foto_objek sebagai null $pembanding['foto_objek'] = null; - + return $pembanding; } @@ -718,10 +718,8 @@ class SurveyorController extends Controller $branches = Branch::all(); $provinces = Province::all(); - $debitur = Debiture::find($permohonan->debiture_id); - $cities = City::where('province_code', $debitur->province_code)->get(); - $districts = District::where('city_code', $debitur->city_code)->get(); - $villages = Village::where('district_code', $debitur->district_code)->get(); + + $surveyor = $id; $basicData = $this->getCommonData(); @@ -731,6 +729,28 @@ class SurveyorController extends Controller if ($inpeksi) { $forminspeksi = json_decode($inpeksi->data_form, true); } + + // Default: gunakan data dari debitur + $debitur = Debiture::find($permohonan->debiture_id); + + $provinceCode = $debitur->province_code; + $cityCode = $debitur->city_code; + $districtCode = $debitur->district_code; + + // Jika alamat tidak sesuai, override dengan kode dari alamat + + $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; + + if ($cekAlamat) { + $provinceCode = $cekAlamat['province_code'] ?? $provinceCode; + $cityCode = $cekAlamat['city_code'] ?? $cityCode; + $districtCode = $cekAlamat['district_code'] ?? $districtCode; + } + + // Ambil data menggunakan kode yang telah ditentukan + $cities = City::where('province_code', $provinceCode)->get(); + $districts = District::where('city_code', $cityCode)->get(); + $villages = Village::where('district_code', $districtCode)->get(); return view('lpj::surveyor.components.inspeksi', compact( 'permohonan', 'surveyor', @@ -742,7 +762,8 @@ class SurveyorController extends Controller 'villages', 'link_url_region', 'forminspeksi', - 'basicData' + 'basicData', + 'cekAlamat' )); } @@ -839,11 +860,11 @@ class SurveyorController extends Controller // Ambil data pendukung $data = $this->getCommonData(); $provinces = Province::all(); - + $cities = City::where('province_code', $this->getCodeAlamat('province_code', $inspectionData))->get(); $districts = District::where('city_code', $this->getCodeAlamat('city_code', $inspectionData))->get(); - $villages = Village::where('district_code',$this->getCodeAlamat('district_code', $inspectionData))->get(); - + $villages = Village::where('district_code', $this->getCodeAlamat('district_code', $inspectionData))->get(); + return view('lpj::surveyor.components.data-pembanding', compact( @@ -868,7 +889,8 @@ class SurveyorController extends Controller } - public function getCodeAlamat($code, $inspectionData){ + public function getCodeAlamat($code, $inspectionData) + { $cekAlamat = isset( $inspectionData['asset']['alamat']['sesuai'], ) @@ -1443,18 +1465,10 @@ class SurveyorController extends Controller $data['alamat_sesuai'] => $alamatData ], 'hub_cadeb' => [ - $data['hub_cadeb'] => $this->getFieldData( - $data, - 'hub_cadeb', - true - ) + $data['hub_cadeb'] => ($data['hub_cadeb'] == 'sesuai') ? $data['hub_cadeb_sesuai'] : $data['hub_cadeb_tidak_sesuai'] ], 'hub_cadeb_penghuni' => [ - $data['hub_cadeb_penghuni'] => $this->getFieldData( - $data, - 'hub_cadeb_penghuni', - true - ) + $data['hub_cadeb_penghuni'] => ($data['hub_cadeb_penghuni'] == 'sesuai') ? $data['hub_cadeb_penghuni_sesuai'] : $data['hub_penghuni_tidak_sesuai'] ], 'kordinat_lng' => $data['kordinat_lng'] ?? null, @@ -1473,11 +1487,9 @@ class SurveyorController extends Controller 'luas_tanah', true ), - 'hadap_mata_angin' => $this->getFieldData( - $data, - 'hadap_mata_angin', - true - ), + 'hadap_mata_angin' => [ + $data['hadap_mata_angin'] => ($data['hadap_mata_angin'] == 'sesuai') ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'] + ], 'bentuk_tanah' => $this->getFieldData( $data, 'bentuk_tanah', @@ -1486,7 +1498,7 @@ class SurveyorController extends Controller ), 'kontur_tanah' => $data['kontur_tanah'] ?? [], 'ketinggian_tanah' => [ - 'ketinggian' => $data['kontur_tanah'] ?? null, + 'ketinggian' => $data['ketinggian_jalan'] ?? null, 'lebih_tinggi' => $data['ketinggian_lebih_tinggi'] ?? null, 'lebih_rendah' => $data['ketinggian_lebih_rendah'] ?? null ], @@ -1518,33 +1530,37 @@ class SurveyorController extends Controller foreach ($request->input('nama_bangunan') as $index => $buildingName) { - if (empty($buildingName)) continue; // Skip if building name is empty - + 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 - + 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; } } - + return [ 'bangunan' => [ @@ -1575,17 +1591,27 @@ class SurveyorController extends Controller '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' => $data['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' => $data['terletak_diarea'] ?? null, + 'terletak_diarea' => $this->getFieldData( + $data, + 'terletak_diarea', + false, + 'lainnya' + ), 'disekitar_lokasi' => $data['disekitar_lokasi'] === 'yes' ? [ 'kondisi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, 'sifat' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, ] : $data['disekitar_lokasi'], - 'kondisi_bangunan_sekitar' => $data['kondisi_bangunan_sekitar'] ?? null, - 'sifat_bangunan_sekitar' => $data['sifat_bangunan_sekitar'] ?? 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, @@ -1593,7 +1619,12 @@ class SurveyorController extends Controller 'jarak_tps' => $data['jarak_tps'] ?? null, 'nama_tps' => $data['nama_tps'] ?? null, 'merupakan_daerah' => $data['merupakan_daerah'] ?? null, - 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null, + 'fasilitas_dekat_object' => $this->getFieldData( + $data, + 'fasilitas_dekat_object', + false, + 'lainnya' + ), ] ]; } diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index 11ef307..f56063f 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -86,6 +86,8 @@ class FormSurveyorRequest extends FormRequest 'tusuk_sate' => 'required', 'lockland' => 'required', 'kondisi_fisik_tanah' => 'required|array', + 'ketinggian_lebih_tinggi' => 'nullable', + 'ketinggian_lebih_rendah' => 'nullable', ]; } @@ -104,11 +106,11 @@ class FormSurveyorRequest extends FormRequest 'kondisi_bangunan' => 'nullable', 'sifat_bangunan' => 'required|array', 'sifat_bangunan_input' => 'nullable|array', - - 'nama_bangunan.*' => 'required|string|max:255', - 'spek_kategori_bangunan.*' => 'nullable|string', - 'spek_bangunan.*.*' => 'array', + + 'nama_bangunan.*' => 'required|string|max:255', + 'spek_kategori_bangunan.*' => 'nullable|string', + 'spek_bangunan.*.*' => 'array', 'spek_bangunan.*.*.*' => 'string', 'sarana_pelengkap' => 'required', @@ -147,12 +149,14 @@ class FormSurveyorRequest extends FormRequest 'jarak_cbd_point' => 'nullable', 'nama_cbd_point' => 'nullable', 'lebar_perkerasan_jalan' => 'nullable', - 'perkerasan_jalan.*' => 'nullable', + 'perkerasan_jalan' => 'nullable|array', + 'perkerasan_jalan_lainnya' => 'nullable', 'lalu_lintas' => 'nullable', 'gol_mas_sekitar' => 'nullable', 'tingkat_keramaian' => 'nullable', 'terletak_diarea' => 'nullable', - 'disekitar_lokasi' => 'nullable', + 'terletak_diarea_lainnya' => 'nullable', + 'disekitar_lokasi' => 'required', 'kondisi_bagunan_disekitar_lokasi' => 'nullable', 'sifat_bagunan_disekitar_lokasi' => 'nullable', 'dekat_makam' => 'nullable', @@ -162,7 +166,8 @@ class FormSurveyorRequest extends FormRequest 'jarak_tps' => 'nullable', 'nama_tpu' => 'nullable', 'merupakan_daerah' => 'nullable', - 'fasilitas_dekat_object' => 'nullable', + 'fasilitas_dekat_object' => 'nullable|array', + 'fasilitas_dekat_object_lainnya' => 'nullable', ]; } @@ -530,7 +535,7 @@ class FormSurveyorRequest extends FormRequest 'hub_cadeb_tidak_sesuai' => 'nullable', 'hub_cadeb_penghuni' => 'required', 'hub_cadeb_penghuni_sesuai' => 'nullable', - 'hub_cadeb_penghuni_tidak_sesuai' => 'nullable', + 'hub_penghuni_tidak_sesuai' => 'nullable', 'address' => 'nullable', 'village_code' => 'nullable', @@ -557,7 +562,7 @@ class FormSurveyorRequest extends FormRequest 'batas_batas_input' => 'nullable|array', 'kondisi_lingkungan' => 'nullable|array', 'kondisi_lain_bangunan' => 'nullable|array', - 'informasi_dokument' => 'nullable', + 'informasi_dokument' => 'nullable|array', 'peruntukan' => 'nullable', 'kdb' => 'nullable', 'kdh' => 'nullable', diff --git a/resources/views/surveyor/components/bangunan.blade.php b/resources/views/surveyor/components/bangunan.blade.php index 864daf0..9cc8e9d 100644 --- a/resources/views/surveyor/components/bangunan.blade.php +++ b/resources/views/surveyor/components/bangunan.blade.php @@ -38,13 +38,19 @@ {{ old('luas_tanah_bagunan', isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'])) ? 'checked' : '' }}> Tidak Sesuai + @php + $statusKey = isset($forminspeksi['bangunan']['luas_tanah_bagunan']['sesuai']) + ? 'sesuai' + : 'tidak sesuai'; + $selectedData = $forminspeksi['bangunan']['luas_tanah_bagunan'][$statusKey] ?? null; + @endphp
@endforeach @else -