perbaikan pembanding kendaraan, alat berat, pesawat, kapal, print out dan ukuran foto pada objek jaminan

This commit is contained in:
majid
2025-01-08 13:53:18 +07:00
parent 92ac480c9b
commit 029260bcef
12 changed files with 434 additions and 396 deletions

View File

@@ -909,8 +909,8 @@ class SurveyorController extends Controller
$jenisJaminan = $inspeksi->dokument->jenisJaminan->name ?? '';
$isTanahBangunan = !in_array(
strtoupper($jenisJaminan->name ?? ''),
['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT']
strtoupper($jenisJaminan ?? ''),
['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN']
);
$isInvalid =
@@ -968,7 +968,9 @@ class SurveyorController extends Controller
->route('surveyor.index')
->with('success', 'Jadwal berhasil dibuat.');
} catch (\Exception $e) {
return response()->json(['buttonDisable' => $e->getMessage()]);
return redirect()
->route('surveyor.index')
->with('error', 'Tanggal dan catatan tidak boleh kosong');
}
}
@@ -1052,6 +1054,19 @@ class SurveyorController extends Controller
private function formatSinglePembanding($request, $index)
{
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($request->action) &&
in_array(strtoupper($request->action), array_map('strtoupper', $tanahBangunanTypes))) {
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon',
'sumber_data', 'harga', 'tahun','transmisi','telepon',
'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi'
];
}else{
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan',
@@ -1059,6 +1074,7 @@ class SurveyorController extends Controller
'peruntukan', 'penawaran', 'telepon','hak_properti',
'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek'
];
}
$pembanding = [];
foreach ($fields as $field) {
@@ -1252,6 +1268,104 @@ class SurveyorController extends Controller
return $objekPenilaian;
}
private function formatObjekPenilaiankendaraan($request)
{
$fields = [
'address', 'village_code', 'district_code', 'city_code', 'province_code',
'nama', 'type','warna','lokasi', 'total', 'diskon', 'harga_diskon',
'sumber_data', 'harga', 'tahun','transmisi','telepon',
'kordinat_lat', 'kordinat_lng', 'tahun_pembuatan','merek_buatan','kapasitas','power','kondisi'
];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
$needsSave = false;
// Handle foto_form
$fotoForm = json_decode($inspeksi->foto_form, true) ?: [];
if (!isset($fotoForm['object_jaminan'])) {
$fotoForm['object_jaminan'] = [['foto_objek' => null]];
$needsSave = true;
}
// Handle data_form
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
// Update data dengan mempertahankan struktur sesuai/tidak sesuai
foreach ($fields as $field) {
if ($request->filled($field)) {
$newValue = $request->input($field);
// Fields untuk alamat dalam asset
if (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) {
if (!isset($dataForm['alamat'])) {
$dataForm['alamat'] = [];
}
$alamatStatus = $dataForm['alamat'] == 'sesuai' ? 'sesuai' : 'tidak sesuai';
if (!isset($dataForm['alamat'][$alamatStatus])) {
$dataForm['alamat'][$alamatStatus] = [];
}
$dataForm['alamat'][$alamatStatus][$field] = $newValue;
}
else {
if (!isset($dataForm[$field])) {
$dataForm[$field] = [];
}
$dataForm[$field] = $newValue;
}
$needsSave = true;
}
}
if ($needsSave) {
$inspeksi->foto_form = json_encode($fotoForm);
$inspeksi->data_form = json_encode($dataForm);
$inspeksi->save();
}
$existingFoto = $fotoForm['object_jaminan'][0]['foto_objek'] ?? null;
// Gabungkan data dari tanah, bangunan, dan asset
$objekPenilaian = array_merge(
['foto_objek' => $existingFoto],
array_reduce($fields, function ($carry, $field) use ($request, $dataForm) {
if (isset($dataForm[$field])) {
if (is_array($dataForm[$field])) {
if (isset($dataForm[$field]['sesuai'])) {
$carry[$field] = $dataForm[$field]['sesuai'];
} elseif (isset($dataForm[$field]['tidak sesuai'])) {
$carry[$field] = $dataForm[$field]['tidak sesuai'];
}
} else {
$carry[$field] = $dataForm[$field];
}
} else {
$carry[$field] = $request->input($field);
}
return $carry;
}, [])
);
} else {
// Inisialisasi data baru
$objekPenilaian = array_reduce($fields, function ($carry, $field) use ($request) {
$carry[$field] = $request->input($field);
return $carry;
}, ['foto_objek' => null]);
}
return $objekPenilaian;
}
private function saveInspeksi($formattedData)
@@ -1283,7 +1397,15 @@ class SurveyorController extends Controller
'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize,
]);
$objekPenilaian = $this->formatObjekPenilaian($request);
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($request->action) &&
in_array(strtoupper($request->action), array_map('strtoupper', $tanahBangunanTypes))) {
$objekPenilaian = $this->formatObjekPenilaiankendaraan($request);
}else{
$objekPenilaian = $this->formatObjekPenilaian($request);
}
if ($request->hasFile('foto_objek')) {
$newFoto = $this->handleupdateOrDeleteFile(
$request->file('foto_objek'),
@@ -1583,16 +1705,21 @@ class SurveyorController extends Controller
public function getCodeAlamat($code, $inspectionData)
{
$cekAlamat = isset(
$inspectionData['asset']['alamat']['sesuai'],
)
? 'sesuai'
: 'tidak sesuai';
$selectedProvince =
$inspectionData['asset']['alamat'][$cekAlamat][
$code
] ?? null;
return $selectedProvince;
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
if (isset($inspectionData['action']) &&
in_array(strtoupper($inspectionData['action']), array_map('strtoupper', $tanahBangunanTypes))) {
return $selectedProvince = $inspectionData['alamat']['sesuai'][$code] ?? null;
}
if (isset($inspectionData['asset'])) {
$cekAlamat = isset($inspectionData['asset']['alamat']['sesuai']) ? 'sesuai' : 'tidak sesuai';
$selectedProvince = $inspectionData['asset']['alamat'][$cekAlamat][$code] ?? null;
return $selectedProvince;
}
return null;
}