fix(surveyor): update key dokument jaminan
This commit is contained in:
@@ -2017,7 +2017,7 @@ class SurveyorController extends Controller
|
|||||||
|
|
||||||
private function updateDetails($permohonan, $key, $newValue)
|
private function updateDetails($permohonan, $key, $newValue)
|
||||||
{
|
{
|
||||||
$document = $permohonan->debiture->documents->first();
|
$document = $permohonan->documents->first();
|
||||||
|
|
||||||
if (!$document) {
|
if (!$document) {
|
||||||
throw new \Exception("Document not found");
|
throw new \Exception("Document not found");
|
||||||
@@ -2031,18 +2031,18 @@ class SurveyorController extends Controller
|
|||||||
|
|
||||||
$datas = json_decode($detailsUpdate->details, true) ?? [];
|
$datas = json_decode($detailsUpdate->details, true) ?? [];
|
||||||
|
|
||||||
if (is_numeric($newValue)) {
|
if (!is_scalar($newValue)) {
|
||||||
$newValue = [$key => $newValue];
|
throw new \InvalidArgumentException("New value must be a scalar (string/number)");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array($newValue)) {
|
// Update nilai berdasarkan kunci
|
||||||
throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string");
|
if (array_key_exists($key, $datas)) {
|
||||||
}
|
$datas[$key] = $newValue;
|
||||||
|
} else {
|
||||||
foreach ($newValue as $subKey => $value) {
|
throw new \Exception("Key '{$key}' not found in details");
|
||||||
$datas[$subKey] = $value; // Update atau tambahkan key baru
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simpan kembali ke database
|
||||||
$detailsUpdate->update([
|
$detailsUpdate->update([
|
||||||
'details' => json_encode($datas),
|
'details' => json_encode($datas),
|
||||||
]);
|
]);
|
||||||
@@ -2414,19 +2414,41 @@ 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
|
private function getTanahData(array $data): array
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$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);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'tanah' => [
|
'tanah' => [
|
||||||
'luas_tanah' => $this->getFieldData(
|
'luas_tanah' => $dataForm['tanah']['luas_tanah'] ?? $data['luas_tanah'],
|
||||||
$data,
|
'hadap_mata_angin' => $dataForm['tanah']['hadap_mata_angin'] ?? $data['hadap_mata_angin'],
|
||||||
'luas_tanah',
|
|
||||||
true
|
|
||||||
),
|
|
||||||
'hadap_mata_angin' => [
|
|
||||||
$data['hadap_mata_angin'] => $data['hadap_mata_angin'] == 'sesuai' ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'] ?? null
|
|
||||||
],
|
|
||||||
'bentuk_tanah' => $this->getFieldData(
|
'bentuk_tanah' => $this->getFieldData(
|
||||||
$data,
|
$data,
|
||||||
'bentuk_tanah',
|
'bentuk_tanah',
|
||||||
@@ -2499,14 +2521,16 @@ 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');
|
||||||
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'bangunan' => [
|
'bangunan' => [
|
||||||
'luas_tanah_bagunan' => $this->getFieldData(
|
'luas_tanah_bagunan' => $dataForm['bangunan']['luas_tanah_bagunan'] ?? $data['luas_tanah_bagunan'],
|
||||||
$data,
|
|
||||||
'luas_tanah_bagunan',
|
|
||||||
true
|
|
||||||
),
|
|
||||||
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
|
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
|
||||||
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
|
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
|
||||||
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
||||||
@@ -3181,6 +3205,7 @@ class SurveyorController extends Controller
|
|||||||
|
|
||||||
private function getUnitData($data, $request): array
|
private function getUnitData($data, $request): array
|
||||||
{
|
{
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'action' => $data['action'] ?? null,
|
'action' => $data['action'] ?? null,
|
||||||
'luas_unit' => $this->getFieldData(
|
'luas_unit' => $this->getFieldData(
|
||||||
@@ -3262,35 +3287,30 @@ class SurveyorController extends Controller
|
|||||||
bool $checkKesesuaian = false,
|
bool $checkKesesuaian = false,
|
||||||
?string $extraField = null
|
?string $extraField = null
|
||||||
): array {
|
): array {
|
||||||
|
$result = [];
|
||||||
|
|
||||||
if ($checkKesesuaian) {
|
if ($checkKesesuaian) {
|
||||||
// Mengecek apakah status kesesuaian adalah 'sesuai'
|
|
||||||
$isSesuai = ($data[$fieldName] ?? '') === 'sesuai';
|
$isSesuai = ($data[$fieldName] ?? '') === 'sesuai';
|
||||||
|
$fieldKey = $isSesuai ? "{$fieldName}_sesuai" : "{$fieldName}_tidak_sesuai";
|
||||||
|
|
||||||
// Menggunakan key berdasarkan status kesesuaian
|
// Hanya simpan key yang dipilih
|
||||||
$result = [
|
if ($isSesuai) {
|
||||||
$isSesuai ? 'sesuai' : 'tidak_sesuai' => $data[$fieldName] ?? null
|
$result['sesuai'] = $data[$fieldKey] ?? null;
|
||||||
];
|
} else {
|
||||||
|
$result['tidak sesuai'] = $data[$fieldKey] ?? null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result[$fieldName] = $data[$fieldName] ?? null;
|
||||||
|
|
||||||
// Tambahkan field ekstra jika ada
|
|
||||||
if ($extraField) {
|
if ($extraField) {
|
||||||
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
|
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Jika tidak melakukan pengecekan kesesuaian, hanya ambil data berdasarkan fieldName
|
// Hapus key dengan nilai null untuk memastikan hanya key yang valid yang disimpan
|
||||||
$result = [
|
return array_filter($result, fn ($value) => $value !== null);
|
||||||
$fieldName => $data[$fieldName] ?? null,
|
|
||||||
];
|
|
||||||
|
|
||||||
// Jika ada extra field, tambahkan ke result
|
|
||||||
if ($extraField) {
|
|
||||||
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function export(string $type)
|
public function export(string $type)
|
||||||
|
|||||||
Reference in New Issue
Block a user