diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 1008d7d..bfb447f 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -9,6 +9,7 @@ use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\TeamsUsers; +use Modules\Lpj\Models\PenilaianTeam; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Exports\PermohonanExport; use Maatwebsite\Excel\Facades\Excel; @@ -65,10 +66,33 @@ class ActivityController extends Controller }) ->get(); + + + return view('lpj::activity.progres_activity.index', compact('teamsActivity')); } + function updateTeamAssingment(Request $request) { + + try { + $id = $request->input('id'); + $user = PenilaianTeam::where('penilaian_id', $id)->get(); + if ($user) { + foreach ($user as $item) { + if($item->role == 'surveyor') { + $item->update(['user_id' => $request->surveyor_id]); + } + } + return redirect()->route('activity.progres.index')->with('success', 'Surveyor berhasil diganti'); + } + + } catch (\Throwable $th) { + return redirect()->route('activity.progres.index')->with('success', $th->getMessage()); + } + } + + public function senior() { diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 2844358..6b48f91 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -48,11 +48,14 @@ use Modules\Lpj\Models\MerupakanDaerah; use Modules\Lpj\Models\ObjekJaminan; use Modules\Lpj\Models\ModelAlatBerat; use Modules\Lpj\Models\JenisPesawat; +use Modules\Lpj\Models\DokumenJaminan; +use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\JenisKapal; use Modules\Lpj\Models\JenisKendaraan; use Modules\Lpj\Models\RuteJaminan; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\HubunganPemilikJaminan; +use Modules\Lpj\Models\HubunganPenghuniJaminan; use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\GolonganMasySekitar; use Modules\Lpj\Models\TingkatKeramaian; @@ -176,6 +179,8 @@ class SurveyorController extends Controller { $data = $request->validated(); + + if (!$data) { return response()->json(['success' => false, 'message' => 'Invalid data'], 400); } @@ -188,20 +193,20 @@ class SurveyorController extends Controller $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - if ($inspeksi) { - $inspeksi->update(['data_form' => json_encode($rules)]); - } else { + if (!$inspeksi) { Inspeksi::create([ - 'permohonan_id' => $request->permohonan_id, + 'permohonan_id' => $request->input('permohonan_id'), 'data_form' => json_encode($rules), - 'name' => $request->type, - 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + 'name' => $request->input('type'), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), ]); + } else { + $inspeksi->update(['data_form' => json_encode($rules)]); } DB::commit(); - return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $rules], 200); + return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $data], 200); } catch (Exception $e) { DB::rollBack(); return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500); @@ -529,6 +534,43 @@ class SurveyorController extends Controller ->with('error', 'Gagal membuat jadwal: ' . $e->getMessage()); } } + + + public function storeDataPembanding(Request $request) + { + $data = $request->all(); + if (!$data) { + return response()->json(['success' => false, 'message' => 'Invalid data'], 400); + } + + try { + DB::beginTransaction(); + + // $action = $request->input('type'); + // $rules = $this->getActionSpecificRules($data, $action, $request); + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); + + if (!$inspeksi) { + Inspeksi::create([ + 'permohonan_id' => $request->input('permohonan_id'), + 'data_pembanding' => json_encode($data), + 'name' => $request->input('type'), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + ]); + } else { + $inspeksi->update(['data_pembanding' => json_encode($data)]); + } + + DB::commit(); + + return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => json_encode($data)], 200); + } catch (Exception $e) { + DB::rollBack(); + return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500); + } + } + /** * Form inspeksi. */ @@ -574,6 +616,7 @@ class SurveyorController extends Controller $jenisPesawat = JenisPesawat::all(); $modelAlatBerat = ModelAlatBerat::all(); $hubCadeb = HubunganPemilikJaminan::all(); + $hubPenghuni = HubunganPenghuniJaminan::all(); $jenisJaminan = JenisJaminan::all(); $fasilitasObjek = FasilitasObjek::all(); $merupakanDaerah = MerupakanDaerah::all(); @@ -622,7 +665,8 @@ class SurveyorController extends Controller 'merupakanDaerah', 'terletakDiArea', 'posisiUnit', - 'bentukUnit' + 'bentukUnit', + 'hubPenghuni' )); } @@ -697,6 +741,7 @@ class SurveyorController extends Controller $branches = Branch::all(); $provinces = Province::all(); + $data = $this->getCommonData(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $forminspeksi = null; @@ -706,7 +751,7 @@ class SurveyorController extends Controller } // return response()->json($forminspeksi); - return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces', 'forminspeksi')); + return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces', 'forminspeksi', 'data')); } @@ -852,8 +897,92 @@ class SurveyorController extends Controller ->route('basicdata.' . $type . '.index') ->with('success', 'Updated successfully'); } + } + public function update_analisa($id, Request $request) + { + try { + $permohonan = Permohonan::with([ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + 'penilaian', + 'documents', + ])->findOrFail($id); + + $jenisAssetUpdated = false; + if ($request->input('types') == 'jenis_asset') { + $this->updateJenisAsset($permohonan, $request); + $jenisAssetUpdated = true; + } + + if (in_array($request->input('types'), ['analisa_tanah', 'analisa_bangunan', 'analisa_unit'])) { + $key = match ($request->input('types')) { + 'analisa_tanah' => 'luas_tanah', + 'analisa_bangunan' => 'luas_bangunan', + 'analisa_unit' => 'luas_unit', + }; + + $this->updateDetails($permohonan, $key, $request->input($key)); + } + + return response()->json([ + 'success' => true, + 'message' => 'Data berhasil disimpan', + 'jenis_asset' => $jenisAssetUpdated, + ], 200); + } catch (\Exception $e) { + return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500); + } + } + + + private function updateJenisAsset($permohonan, $request) + { + $jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id; + DokumenJaminan::where('permohonan_id', $permohonan->id) + ->where('jenis_jaminan_id', $jenis_jaminan_id) + ->update([ + 'jenis_jaminan_id' => $request->input('jenis_asset'), + ]); + } + + private function updateDetails($permohonan, $key, $newValue) + { + $document = $permohonan->debiture->documents->first(); + + if (!$document) { + throw new \Exception("Document not found"); + } + + $detailsUpdate = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->first(); + + if (!$detailsUpdate) { + throw new \Exception("DetailDokumenJaminan not found"); + } + + $datas = json_decode($detailsUpdate->details, true) ?? []; + + if (is_numeric($newValue)) { + $newValue = [$key => $newValue]; + } + + if (!is_array($newValue)) { + throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string"); + } + + foreach ($newValue as $subKey => $value) { + $datas[$subKey] = $value; // Update atau tambahkan key baru + } + + $detailsUpdate->update([ + 'details' => json_encode($datas), + ]); } @@ -1132,6 +1261,13 @@ class SurveyorController extends Controller 'modelAlatBerat' => ModelAlatBerat::all(), 'jenisKapal' => JenisKapal::all(), 'jenisKendaraan' => JenisKendaraan::all(), + 'terletakArea' => TerletakArea::all(), + 'posisiUnit' => PosisiUnit::all(), + 'bentukUnit' => BentukUnit::all(), + 'fasilitasObjek' => FasilitasObjek::all(), + 'merupakanDaerah' => MerupakanDaerah::all(), + 'jenisUnit' => JenisUnit::all(), + ]; } @@ -1215,16 +1351,26 @@ class SurveyorController extends Controller private function getBangunanData($data, $request): array { - // $kategori_bangunan = []; - // if ($request->has('spek_kategori_bagunan')) { - // foreach ($request->input('spek_kategori_bagunan', []) as $value) { - // $kategori_bangunan[] = [ - // 'value' => [ - // 'data' => $data['spek_bangunan'] ?? [], - // ], - // ]; - // } - // } + $data = $request->all(); + $result = []; + + // foreach ($data['nama_bagunan'] as $index => $bangunan) { + // $bangunanData = [ + // 'bangunan' => $bangunan, + // 'kategori' => [] + // ]; + + // foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) { + // if (isset($data['spek_bangunan'][$kategori])) { + // $bangunanData['kategori'][] = [ + // 'kategori' => $kategori, + // 'spesifikasi' => $data['spek_bangunan'][$kategori] + // ]; + // } + // } + + // $result[] = $bangunanData; + // } return [ 'bangunan' => [ @@ -1233,8 +1379,8 @@ class SurveyorController extends Controller 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, - 'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null, - 'spek_bangunan' => $data['spek_bangunan'] ?? [], + 'spesifikasi_bangunan' => $result ?? null, + // 'spek_bangunan' => $data['spek_bangunan'] ?? [], 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [], 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, ], @@ -1740,6 +1886,3 @@ class SurveyorController extends Controller } - - - diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index 719b695..0a3245b 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -100,9 +100,9 @@ class FormSurveyorRequest extends FormRequest 'kondisi_bangunan' => 'nullable', 'sifat_bangunan' => 'required|array', 'sifat_bangunan_input' => 'nullable|array', - 'nama_bagunan' => 'required|array', - 'spek_kategori_bangunan' => 'required|array', - 'spek_kategori_bangunan.*' => 'required|string', + 'nama_bagunan' => 'required', + 'spek_kategori_bangunan.*' => 'required', + 'spek_bangunan.*' => 'required', 'sarana_pelengkap' => 'required', 'sarana_pelengkap_input' => 'nullable|array', ]; diff --git a/database/migrations/2024_11_27_214423_update_inspeksi_table.php b/database/migrations/2024_11_27_214423_update_inspeksi_table.php new file mode 100644 index 0000000..e954dbc --- /dev/null +++ b/database/migrations/2024_11_27_214423_update_inspeksi_table.php @@ -0,0 +1,28 @@ +json('data_pembanding')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('inspeksi', function (Blueprint $table) { + $table->dropColumn('data_pembanding'); + }); + } +}; diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 3884136..2e4189f 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -118,12 +118,11 @@
{{ $luas_bangunan }} m2
+ @endforeach + + @endif| - Nama - - | -- Objek Penilaian - - | -- Data Pembanding 1 - | -
|---|---|---|
| - Foto - | -- @php - $formFoto = json_decode($forminspeksi['foto_form'], true); - $formIns = json_decode($forminspeksi['data_form'], true); - @endphp + | -- - | -
{{ $luas_tanah }} m2
- @endforeach + @foreach ($permohonan->debiture->documents as $item) + @php + $luas = $item->detail; + $details = json_decode($luas[0]->details, true); + $luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 'N/A'; + @endphp +{{ $luas_tanah }} m2
+ @endforeach + @endif