diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 9368e1d..5a400ee 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -34,8 +34,9 @@ use Modules\Lpj\Models\Denah; use Modules\Lpj\Models\FotoJaminan; use Modules\Lpj\Models\Lingkungan; use Modules\Lpj\Models\LantaiUnit; -use Modules\Lpj\Models\Lantai; use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\Lantai; +use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\ViewUnit; use Modules\Lpj\Models\ObjekJaminan; use Modules\Lpj\Models\RuteJaminan; @@ -156,48 +157,117 @@ class SurveyorController extends Controller $data = $request->validated(); if ($data) { try { + + $formatTanahJson =[ + 'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [], + 'jenis_asset' => $data['jenis_asset'] ?? null, + 'jenis_asset_tidak_sesuai' => $data['jenis_asset_tidak_sesuai'] ?? null, + 'alamat_sesuai' => $data['alamat_sesuai'] ?? null, + 'alamat_tidak_sesuai' => $data['alamat_tidak_sesuai'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_kabupaten' => $data['kota_kabupaten'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'kordinat_lng' => $data['kordinat_lng'] ?? null, + 'kordinat_lat' => $data['kordinat_lat'] ?? null, + 'luas_tanah' => $data['luas_tanah'] ?? null, + 'luas_tanah_tidak_sesuai' => $data['luas_tanah_tidak_sesuai'] ?? null, + 'hadap_mata_angin' => $data['hadap_mata_angin'] ?? null, + 'hadap_mata_angin_tidak_sesuai' => $data['hadap_mata_angin_tidak_sesuai'] ?? null, + 'bentuk_tanah' => $data['bentuk_tanah'] ?? null, + 'bentuk_tanah_lainnya' => $data['bentuk_tanah_lainnya'] ?? null, + 'kontur_tanah' => $data['kontur_tanah'] ?? [], + 'ketinggian_tanah' => $data['ketinggian_tanah'] ?? [], + 'ketinggian_tanah_tidak_sesuai' => $data['ketinggian_tanah_tidak_sesuai'] ?? [], + 'posisi_kavling' => $data['posisi_kavling'] ?? [], + 'posisi_kavling_lainnya' => $data['posisi_kavling_lainnya'] ?? null, + 'tusuk_sate' => $data['tusuk_sate'] ?? null, + 'lockland' => $data['lockland'] ?? null, + 'kondisi_fisik_tanah' => $data['kondisi_fisik_tanah'] ?? [], + 'kondisi_fisik_tanah_lainnya' => $data['kondisi_fisik_tanah_lainnya'] ?? null, + ]; + + + $formatBangunanJson =[ + 'luas_tanah_bangunan' => $data['luas_tanah_bangunan'] ?? null, + 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, + 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, + 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, + 'sifat_bangunan_input' => $data['sifat_bagunan_input'] ?? null, + 'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null, + 'spek_bangunan' => $data['spek_bangunan'] ?? null, + 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [], + 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, + ]; + + + $formatLingkunganJson =[ + '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' => $data['perkerasan_jalan'] ?? null, + '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, + 'disekitar_lokasi' => $data['disekitar_lokasi'] ?? null, + 'kondisi_bangunan_sekitar' => $data['kondisi_bangunan_sekitar'] ?? null, + 'sifat_bangunan_sekitar' => $data['sifat_bangunan_sekitar'] ?? 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, + 'merupkan_daerah' => $data['merupkan_daerah'] ?? null, + 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null, + + ]; + + + $formatFaktaJson =[ + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'rute_menuju' => $data['rute_menuju'] ?? null, + 'batas_batas' => $data['batas_batas'] ?? 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, + 'lat' => $data['lat'] ?? null, + 'lng' => $data['lng'] ?? null, + 'foto_tempat' => $data['foto_tempat'] ?? null, + 'keterangan' => $data['keterangan'] ?? null, + ]; + + $mergeData = array_merge($formatTanahJson, $formatBangunanJson, $formatLingkunganJson, $formatFaktaJson); + + Inspeksi::create([ + 'permohonan_id' => $request->permohonan_id, + 'data_form' => json_encode($mergeData), + 'name' => $request->type, + + ]); + + return response()->json(['message' => 'Data berhasil disimpan', - 'data' => $data], 200); + 'data' => $mergeData], 200); } catch (Exception $e) { - return response()->json(['status' => 500, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500); + return response()->json(['message' => 'Data gagal disimpan: ' . $e->getMessage()], 500); } } - - - // $validatedData = $request->validated(); - // DB::beginTransaction(); - // try { - // $analisa = Analisa::create($validatedData); - - // if ($analisa) { - // $validatedData['analisa_id'] = $analisa->id; - - // switch ($validatedData['action']) { - // case 'tanah_bangunan': - // $this->handleTanahBangunan($validatedData, $request); - // break; - // case 'unit': - // $this->handleUnit($validatedData); - // break; - // default: - // throw new \Exception('Invalid action type'); - // } - - // AnalisaLingkungan::create($validatedData); - // $validatedData['foto_tempat'] = $this->uploadFile($request->file('foto_tempat'), 'foto_tempat'); - // AnalisaFakta::create($validatedData); - // } - - // DB::commit(); - // return redirect()->route('surveyor.show', [ - // 'id' => $validatedData['permohonan_id'], - // 'form' => 'inspeksi' - // ])->with('success', 'Data form surveyor berhasil disimpan'); - // } catch (Exception $e) { - // DB::rollback(); - // return response()->json(['error' => 'Failed to save data', 'details' => $e->getMessage()], 500); - // } } private function handleTanahBangunan(array $validatedData, FormSurveyorRequest $request) diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index 6a25934..0a0e032 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -93,6 +93,7 @@ class FormSurveyorRequest extends FormRequest $assetDescriptionRules = $this->getAssetDescriptionRules(); return array_merge($assetDescriptionRules, [ + 'luas_tanah' => 'required', 'luas_tanah_tidak_sesuai' => 'nullable', 'hadap_mata_angin' => 'required', @@ -120,8 +121,8 @@ class FormSurveyorRequest extends FormRequest 'action' => 'required', 'luas_tanah_bagunan' => 'required', 'jenis_bangunan' => 'required', - 'kondisi_bangunan' => 'required', - 'sifat_bangunan' => 'required', + 'kondisi_bangunan' => 'nullable', + 'sifat_bangunan' => 'required|array', 'sifat_bangunan_input' => 'nullable|array', 'nama_bagunan' => 'required|array', 'spek_kategori_bangunan' => 'required|array', @@ -172,7 +173,7 @@ class FormSurveyorRequest extends FormRequest 'sifat_bangunan_sekitar' => 'nullable', 'dekat_makam' => 'nullable', 'jarak_makam' => 'nullable', - 'nama_tpu' => 'nullable', + 'nama_makam' => 'nullable', 'dekat_tps' => 'nullable', 'jarak_tps' => 'nullable', 'nama_tpu' => 'nullable', @@ -223,6 +224,8 @@ class FormSurveyorRequest extends FormRequest private function getAssetDescriptionRules(): array { return [ + 'permohonan_id' => 'required', + 'type' => 'required', 'debitur_perwakilan' => 'required|array', 'jenis_asset' => 'required', 'jenis_asset_tidak_sesuai' => 'nullable', diff --git a/app/Models/Inspeksi.php b/app/Models/Inspeksi.php new file mode 100644 index 0000000..16c3629 --- /dev/null +++ b/app/Models/Inspeksi.php @@ -0,0 +1,23 @@ +id(); + $table->string('name'); + $table->json('data_form')->nullable(); + $table->json('foto_form')->nullable(); + $table->json('denah_form')->nullable(); + $table->unsignedBigInteger('permohonan_id'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('inspeksi'); + } +}; diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index e00e617..dc21c0a 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -161,7 +161,7 @@ } } if ($analisaType === 'tanah') { - $analisaType = 'kendaraan'; + $analisaType = 'tanah_bangunan'; } if ($analisaType === 'unit_rumah' || $analisaType === 'unit_gedung') { @@ -227,8 +227,6 @@ - - @endsection @push('scripts')