fix(surveyor/penilai): perbaikkan pembanding dan call report

This commit is contained in:
majid
2025-02-23 01:36:34 +07:00
parent 7c6f50265c
commit e4cec2a9a2
5 changed files with 121 additions and 222 deletions

View File

@@ -177,6 +177,10 @@ class SurveyorController extends Controller
// Jika data sudah ada, merge dengan data yang baru
$existingData = json_decode($inspeksi->data_form, true) ?: [];
if (isset($existingData['signature']) && !isset($processedData['signature'])) {
$processedData['signature'] = $existingData['signature'];
}
$mergedData = $this->arrayMergeRecursive($existingData, $processedData);
// Update record
@@ -814,9 +818,9 @@ class SurveyorController extends Controller
// If validation passes, update permohonan status
$permohonan = Permohonan::findOrFail($id);
$permohonan->update([
'status' => 'survey-completed',
'submitted_at' => now()
@@ -2343,6 +2347,11 @@ class SurveyorController extends Controller
'province_code' => $data['province_code'] ?? null,
];
$alamatKey = ($data['alamat_sesuai'] === 'sesuai') ? 'sesuai' : 'tidak sesuai';
$alamat = [];
// Masukkan key baru yang sesuai
$alamat[$alamatKey] = $alamatData;
return [
'asset' => [
'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [],
@@ -2351,9 +2360,7 @@ class SurveyorController extends Controller
? $data['jenis_asset_name']
: ($data['jenis_asset_tidak_sesuai'] ?? null)
],
'alamat' => [
$data['alamat_sesuai'] => $alamatData
],
'alamat' => $alamat,
'hub_cadeb' => [
$data['hub_cadeb'] => ($data['hub_cadeb'] == 'sesuai') ? $data['hub_cadeb_sesuai'] : $data['hub_cadeb_tidak_sesuai']
],
@@ -2368,41 +2375,24 @@ class SurveyorController extends Controller
];
}
private function updateFormData(array &$dataForm, array $data, $inspeksi, string $section, string $key, string $sesuaiKey, string $tidakSesuaiKey): void
{
if (isset($dataForm[$section][$key])) {
$dataForm[$section][$key] = []; // Reset data
if ($data[$key] == 'sesuai') {
$dataForm[$section][$key]['sesuai'] = $data[$sesuaiKey] ?? null;
} elseif ($data[$key] == 'tidak sesuai') {
$dataForm[$section][$key]['tidak sesuai'] = $data[$tidakSesuaiKey] ?? null;
}
if ($inspeksi) {
$inspeksi->data_form = json_encode($dataForm);
$inspeksi->save();
}
} else {
$data[$key] = $this->getFieldData($data, $key, true);
}
}
private function getTanahData(array $data): array
{
//luas tanah key
$luas_tanah_key = ($data['luas_tanah'] === 'sesuai') ? 'sesuai' : 'tidak sesuai';
$luas_tanah = [];
$hasil_tanah = $luas_tanah_key === 'sesuai' ? $data['luas_tanah_sesuai'] : $data['luas_tanah_tidak_sesuai'];
$luas_tanah[$luas_tanah_key] = $hasil_tanah;
$inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first();
// Decode data_form dari inspeksi
$dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : [];
$this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'luas_tanah', 'luas_tanah_sesuai', 'luas_tanah_tidak_sesuai');
$this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'hadap_mata_angin', 'hadap_mata_angin_sesuai', 'hadap_mata_angin_tidak_sesuai');
// dd($dataForm);
// hadap mata angin
$hadap_mata_angin_key = ($data['hadap_mata_angin'] === 'sesuai') ? 'sesuai' : 'tidak sesuai';
$hadap_mata_angin = [];
$hasil_hadap_mata_angin = $hadap_mata_angin_key === 'sesuai' ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'];
$hadap_mata_angin[$hadap_mata_angin_key] = $hasil_hadap_mata_angin;
return [
'tanah' => [
'luas_tanah' => $dataForm['tanah']['luas_tanah'] ?? $data['luas_tanah'],
'hadap_mata_angin' => $dataForm['tanah']['hadap_mata_angin'] ?? $data['hadap_mata_angin'],
'luas_tanah' => $luas_tanah,
'hadap_mata_angin' => $hadap_mata_angin,
'bentuk_tanah' => $this->getFieldData(
$data,
'bentuk_tanah',
@@ -2475,16 +2465,19 @@ class SurveyorController extends Controller
}
}
$inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first();
// Decode data_form dari inspeksi
$dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : [];
$this->updateFormData($dataForm, $data, $inspeksi, 'bangunan', 'luas_tanah_bagunan', 'luas_tanah_bagunan_sesuai', 'luas_tanah_bagunan_tidak_sesuai');
$luas_tanah_bagunan_key = ($data['luas_tanah_bagunan'] === 'sesuai') ? 'sesuai' : 'tidak sesuai';
$luas_tanah_bagunan = [];
$hasil_tanah_bagunan = $luas_tanah_bagunan_key === 'sesuai' ? $data['luas_bangunan_sesuai'] : $data['luas_tanah_bagunan_tidak_sesuai'];
// Masukkan key baru yang sesuai
$luas_tanah_bagunan[$luas_tanah_bagunan_key] = $hasil_tanah_bagunan;
return [
'bangunan' => [
'luas_tanah_bagunan' => $dataForm['bangunan']['luas_tanah_bagunan'] ?? $data['luas_tanah_bagunan'],
'luas_tanah_bagunan' => $luas_tanah_bagunan,
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
@@ -3455,19 +3448,29 @@ class SurveyorController extends Controller
private function arrayMergeRecursive($arr1, $arr2)
{
foreach ($arr2 as $key => $value) {
if (is_array($value) && isset($arr1[$key]) && is_array($arr1[$key])) {
if ($key === 'signature' && isset($arr1['signature'])) {
// Jika key adalah signature, gabungkan secara spesifik
$arr1['signature'] = array_merge($arr1['signature'], $value);
} elseif (is_array($value) && isset($arr1[$key]) && is_array($arr1[$key])) {
// Rekursif untuk key lainnya
$arr1[$key] = $this->arrayMergeRecursive($arr1[$key], $value);
} else {
// Jika nilai baru adalah null, pertahankan nilai lama
if (!is_null($value)) {
$arr1[$key] = $value;
} elseif (!isset($arr1[$key])) {
$arr1[$key] = $value;
}
// Ganti nilai lama dengan nilai baru
$arr1[$key] = $value;
}
}
// Bersihkan key lama yang tidak ada di array baru
foreach ($arr1 as $key => $value) {
if (!array_key_exists($key, $arr2) && $key !== 'signature') {
unset($arr1[$key]);
}
}
return $arr1;
}
public function print_out_inspeksi($permohonan_id, $dokument_id, $jenis_jaminan_id)
{