feat(bank-data): tambahkan logika untuk menyimpan data objek penilaian dan data pembanding

- Menambahkan validasi untuk koordinat sebelum menyimpan data objek penilaian.
- Menggunakan metode updateOrCreate untuk menyimpan data objek penilaian dan data pembanding.
- Memperbaiki penanganan nilai default untuk beberapa atribut saat menyimpan data.
- Menambahkan logging untuk koordinat yang tidak valid.
This commit is contained in:
Daeng Deni Mardaeni
2025-04-08 11:17:14 +07:00
parent 4e9c4cea0f
commit 6eed0f3635

View File

@@ -34,6 +34,64 @@
foreach ($inspeksi as $item) {
if (isset($item->data_pembanding)) {
$data_pembanding = json_decode($item->data_pembanding);
$objekPenilaian = $data_pembanding->objek_penilaian;
if (isset($objekPenilaian)) {
$_lat = $objekPenilaian->kordinat_lat;
$_lng = $objekPenilaian->kordinat_lng;
if (!empty($_lat) && !empty($_lng) && $_lng !== null && $_lat !== null && $_lat !== '' && $_lng !== '') {
$_lat = floatval($_lat);
$_lng = floatval($_lng);
if ($_lat >= -90 && $_lat <= 90 && $_lng >= -180 && $_lng <= 180) {
$_data = [
'address' => $objekPenilaian->address,
'village_code' => $objekPenilaian->village_code,
'district_code' => $objekPenilaian->district_code,
'city_code' => $objekPenilaian->city_code,
'province_code' => $objekPenilaian->province_code,
'tahun' => $item->created_at->format('Y'),
//
'luas_tanah' => isset($objekPenilaian->luas_tanah) && is_numeric($objekPenilaian->luas_tanah) ? $objekPenilaian->luas_tanah : 0,
'luas_bangunan' => isset($objekPenilaian->luas_bangunan) && is_numeric($objekPenilaian->luas_bangunan) ? $objekPenilaian->luas_bangunan : 0,
//
'tahun_bangunan' => isset($objekPenilaian->tahun_bangunan) && is_numeric($objekPenilaian->tahun_bangunan) ? $objekPenilaian->tahun_bangunan : 0,
//
'harga' => isset($objekPenilaian->harga) && is_numeric($objekPenilaian->harga) ? $objekPenilaian->harga : 0,
'harga_diskon' => isset($objekPenilaian->harga_diskon) && is_numeric($objekPenilaian->harga_diskon) ? $objekPenilaian->harga_diskon : 0,
'diskon' => isset($objekPenilaian->diskon) && is_numeric(str_replace(',', '.', $objekPenilaian->diskon)) ? str_replace(',', '.', $objekPenilaian->diskon) : 0,
'total' => isset($objekPenilaian->total) && is_numeric($objekPenilaian->total) ? $objekPenilaian->total : 0,
'harga_penawaran' => isset($objekPenilaian->harga_penawaran) && is_numeric($objekPenilaian->harga_penawaran) ? $objekPenilaian->harga_penawaran : 0,
'nama_nara_sumber' => $objekPenilaian->nama_nara_sumber,
'peruntukan' => $objekPenilaian->peruntukan ?? "",
//
'penawaran' => $objekPenilaian->penawaran ?? "",
//
'telepon' => $objekPenilaian->telepon ?? "",
'hak_properti' => $objekPenilaian->hak_properti ?? "",
'jenis_aset' => $objekPenilaian->jenis_aset ?? "",
'foto_objek' => $objekPenilaian->foto_objek ?? "",
'tanggal' => $objekPenilaian->tanggal ?? null,
'kategori' => 'penilaian',
];
BankData::updateOrCreate(
[
'kordinat_lat' => $_lat,
'kordinat_lng' => $_lng,
'kategori' => 'penilaian'
],
$_data
);
}
} else {
// Invalid coordinates
Log::warning("Invalid coordinates: Lat: $_lat, Lng: $_lng");// Do something to handle this situation, such as logging an error or skipping the record
}
}
foreach ($data_pembanding->data_pembanding as $dataPembanding) {
$lat = $dataPembanding->kordinat_lat;
$lng = $dataPembanding->kordinat_lng;
@@ -49,15 +107,15 @@
'district_code' => $dataPembanding->district_code,
'city_code' => $dataPembanding->city_code,
'province_code' => $dataPembanding->province_code,
'tahun' => is_numeric($dataPembanding->tahun) ? $dataPembanding->tahun : 0,
'luas_tanah' => is_numeric($dataPembanding->luas_tanah) ? $dataPembanding->luas_tanah : 0,
'luas_bangunan' => is_numeric($dataPembanding->luas_bangunan) ? $dataPembanding->luas_bangunan : 0,
'tahun_bangunan' => is_numeric($dataPembanding->tahun_bangunan) ? $dataPembanding->tahun_bangunan : 0,
'harga' => is_numeric($dataPembanding->harga) ? $dataPembanding->harga : 0,
'harga_diskon' => is_numeric($dataPembanding->harga_diskon) ? $dataPembanding->harga_diskon : 0,
'diskon' => is_numeric(str_replace(',', '.', $dataPembanding->diskon)) ? str_replace(',', '.', $dataPembanding->diskon) : 0,
'total' => is_numeric($dataPembanding->total) ? $dataPembanding->total : 0,
'harga_penawaran' => is_numeric($dataPembanding->harga_penawaran) ? $dataPembanding->harga_penawaran : 0,
'tahun' => isset($dataPembanding->tahun) && is_numeric($dataPembanding->tahun) ? $dataPembanding->tahun : 0,
'luas_tanah' => isset($dataPembanding->luas_tanah) && is_numeric($dataPembanding->luas_tanah) ? $dataPembanding->luas_tanah : 0,
'luas_bangunan' => isset($dataPembanding->luas_bangunan) && is_numeric($dataPembanding->luas_bangunan) ? $dataPembanding->luas_bangunan : 0,
'tahun_bangunan' => isset($dataPembanding->tahun_bangunan) && is_numeric($dataPembanding->tahun_bangunan) ? $dataPembanding->tahun_bangunan : 0,
'harga' => isset($dataPembanding->harga) && is_numeric($dataPembanding->harga) ? $dataPembanding->harga : 0,
'harga_diskon' => isset($dataPembanding->harga_diskon) && is_numeric($dataPembanding->harga_diskon) ? $dataPembanding->harga_diskon : 0,
'diskon' => isset($dataPembanding->diskon) && is_numeric(str_replace(',', '.', $dataPembanding->diskon)) ? str_replace(',', '.', $dataPembanding->diskon) : 0,
'total' => isset($dataPembanding->total) && is_numeric($dataPembanding->total) ? $dataPembanding->total : 0,
'harga_penawaran' => isset($dataPembanding->harga_penawaran) && is_numeric($dataPembanding->harga_penawaran) ? $dataPembanding->harga_penawaran : 0,
'nama_nara_sumber' => $dataPembanding->nama_nara_sumber,
'peruntukan' => $dataPembanding->peruntukan,
'penawaran' => $dataPembanding->penawaran,
@@ -72,7 +130,8 @@
BankData::updateOrCreate(
[
'kordinat_lat' => $lat,
'kordinat_lng' => $lng
'kordinat_lng' => $lng,
'kategori' => 'data_pembanding'
],
$data
);
@@ -149,7 +208,7 @@
}
if ($search['kategori']) {
$query->where('kategori',$search['kategori']);
$query->where('kategori', $search['kategori']);
}
if ($search['city_code']) {
@@ -214,7 +273,7 @@
'luas_tanah' => $item->luas_tanah,
'luas_bangunan' => $item->luas_bangunan,
'harga' => $item->harga,
'sumber' => $item->kategori ? ucwords(str_replace('_',' ',$item->kategori)) : '-',
'sumber' => $item->kategori ? ucwords(str_replace('_', ' ', $item->kategori)) : '-',
'nilai_pasar' => $item->nilai_pasar,
'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng,
'address' => formatAlamat($item),