diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 6fec085..a367667 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -90,7 +90,7 @@ class PenilaiController extends Controller 'inspeksi_id' => $inspeksiId, ], [ - 'type_penilai' => 'standard', + 'type_penilai' => 'sederhana', ] ); @@ -1047,6 +1047,25 @@ class PenilaiController extends Controller // Tentukan tipe berdasarkan kondisi $type = $statusLpj->type_penilai ?? null; + if ($type === 'memo') { + return $this->checkDataMemo($type, $statusLpj); + } + + if ($type === 'resume') { + return $this->checkDataResume($type, $statusLpj); + } + + + if ($type === 'standard' || $type === 'sederhana') { + return $this->checkDataLpj($type, $statusLpj); + } + + if ($type === 'rap') { + return $this->checkDataRap($type, $statusLpj); + } + + + // Kembalikan respons dengan tipe yang sesuai return response()->json(['status' => $type]); } @@ -1089,5 +1108,242 @@ class PenilaiController extends Controller } +public function checkDataMemo($type, $statusLpj) +{ + // Ambil data JSON dari statusLpj + $data = json_decode($statusLpj->memo, true) ?? []; + + $validationRules = [ + 'memo' => [ + 'kepada', + 'dari', + 'nomor_memo', + 'tanggal', + 'perihal', + 'jenis_asset_tidak_sesuai', + 'lokasi.lokasi', + 'lokasi.address', + 'lokasi.province_code', + 'lokasi.city_code', + 'lokasi.district_code', + 'lokasi.village_code', + 'lokasi.penilai', + 'terlampir', + 'hasil_survey', + 'kesimpulan_saran', + ], + ]; + + // Validasi data JSON + if (isset($validationRules[$type])) { + $missingFields = []; + + foreach ($validationRules[$type] as $field) { + $keys = explode('.', $field); + $value = $data; + + foreach ($keys as $key) { + if (!isset($value[$key])) { + $missingFields[] = $field; + break; + } + $value = $value[$key]; + } + } + + // Jika ada field yang kosong, kembalikan error + if (!empty($missingFields)) { + return response()->json([ + 'status' => null, + 'message' => "Silahkan lengkapi data memo terlebih dahulu.", + 'missing_fields' => $missingFields, + ], 400); + } + } + + // Jika data valid + return response()->json([ + 'status' => $type, + 'message' => "Data memo valid.", + ]); +} + + + + +public function checkDataResume($type, $statusLpj) +{ + // Ambil data JSON dari statusLpj + $data = json_decode($statusLpj->resume, true) ?? []; + + $validationRules = [ + 'resume' => [ + 'fakta.fakta_positif', + 'fakta.fakta_negatif', + 'fisik', + 'sesuai_imb', + 'keterangan' + ], + ]; + + // Validasi data JSON + if (isset($validationRules[$type])) { + $missingFields = []; + + foreach ($validationRules[$type] as $field) { + $keys = explode('.', $field); + $value = $data; + + foreach ($keys as $key) { + if (!isset($value[$key])) { + $missingFields[] = $field; + break; + } + $value = $value[$key]; + } + + // Validasi khusus untuk array fisik dan sesuai_imb + if ($field === 'fisik' || $field === 'sesuai_imb') { + if (empty($value) || !is_array($value)) { + $missingFields[] = $field; + continue; + } + + // Validasi struktur data di dalam array + foreach ($value as $item) { + $requiredKeys = ['sertifikat', 'luas_tanah', 'luas_bangunan', 'nilai']; + foreach ($requiredKeys as $requiredKey) { + if (!isset($item[$requiredKey])) { + $missingFields[] = $field . '.' . $requiredKey; + } + } + } + } + } + + // Jika ada field yang kosong, kembalikan error + if (!empty($missingFields)) { + return response()->json([ + 'status' => null, + 'message' => "Silahkan lengkapi data resume terlebih dahulu.", + 'missing_fields' => $missingFields, + ], 400); + } + } + + // Jika data valid + return response()->json([ + 'status' => $type, + 'message' => "Data resume valid.", + ]); +} + +public function checkDataLpj($type, $statusLpj) +{ + // Ambil data JSON dari statusLpj + $data = json_decode($statusLpj->lpj, true) ?? []; + + $validationRules = [ + 'lpj' => [ + 'luas_tanah', + 'nilai_tanah_1', + 'nilai_tanah_2', + 'luas_bangunan', + 'nilai_bangunan_1', + 'nilai_bangunan_2', + 'total_nilai_pasar_wajar', + 'likuidasi', + 'likuidasi_nilai_1', + 'likuidasi_nilai_2', + 'asuransi_luas_bangunan', + 'asuransi_nilai_1', + 'asuransi_nilai_2', + 'npw_tambahan' + ], + ]; + + // Validasi data JSON + if (isset($validationRules[$type])) { + $missingFields = []; + + foreach ($validationRules[$type] as $field) { + // Penanganan khusus untuk field yang boleh null + if (in_array($field, ['sarana_pelengkap_penilai', 'nilai_sarana_pelengkap_1', 'nilai_sarana_pelengkap_2'])) { + continue; + } + + if (!isset($data[$field])) { + $missingFields[] = $field; + continue; + } + + // Validasi khusus untuk npw_tambahan + if ($field === 'npw_tambahan' && is_array($data[$field])) { + foreach ($data[$field] as $index => $item) { + $requiredKeys = ['name', 'luas', 'nilai_1', 'nilai_2']; + foreach ($requiredKeys as $key) { + if (!isset($item[$key])) { + $missingFields[] = "npw_tambahan[$index].$key"; + } + } + } + } + } + + + // Jika ada field yang kosong, kembalikan error + if (!empty($missingFields)) { + return response()->json([ + 'status' => null, + 'message' => "Silahkan lengkapi data LPJ terlebih dahulu.", + 'missing_fields' => $missingFields, + ], 400); + } + } + + // Jika data valid + return response()->json([ + 'status' => $type, + 'message' => "Data LPJ valid.", + ]); +} + +public function checkDataRap($type, $statusLpj) +{ + // Ambil data JSON dari statusLpj + $data = json_decode($statusLpj->rap, true) ?? []; + + $requiredFields = [ + 'dari', + 'kepada', + 'perihal', + 'tanggal', + 'nomor_rap' + ]; + + // Cek apakah ada field yang kosong + $missingFields = []; + foreach ($requiredFields as $field) { + if (!isset($data[$field]) || empty($data[$field])) { + $missingFields[] = $field; + } + } + + // Jika ada field yang kosong, kembalikan error + if (!empty($missingFields)) { + return response()->json([ + 'status' => null, + 'message' => "Silahkan lengkapi data RAP terlebih dahulu.", + 'missing_fields' => $missingFields + ], 400); + } + + // Jika semua data terisi + return response()->json([ + 'status' => $type, + 'message' => "Data RAP valid." + ]); +} + } diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php index cbd230f..3149280 100644 --- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php @@ -25,6 +25,7 @@