update form inspeksi dan so bisa ambil alih

This commit is contained in:
majid76
2024-11-28 11:16:45 +07:00
parent b7a60abd3e
commit a2c7df7af3
18 changed files with 1712 additions and 1269 deletions

View File

@@ -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
}