From 6eed0f3635c59d4f9db43099b79ea628ff3a3883 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 8 Apr 2025 11:17:14 +0700 Subject: [PATCH 1/2] 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. --- app/Http/Controllers/BankDataController.php | 83 ++++++++++++++++++--- 1 file changed, 71 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/BankDataController.php b/app/Http/Controllers/BankDataController.php index e0d3f23..3bd9325 100644 --- a/app/Http/Controllers/BankDataController.php +++ b/app/Http/Controllers/BankDataController.php @@ -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), From 5fa1526f1e1bde3f76be26dc2fa1ee1041e0f334 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 8 Apr 2025 11:23:01 +0700 Subject: [PATCH 2/2] feat(bank-data): tambahkan kategori default pada data pembanding - Menambahkan field 'kategori' pada data pembanding. - Menggunakan nilai default 'data_pembanding' jika kategori tidak tersedia. --- app/Http/Controllers/BankDataController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/BankDataController.php b/app/Http/Controllers/BankDataController.php index 3bd9325..186514c 100644 --- a/app/Http/Controllers/BankDataController.php +++ b/app/Http/Controllers/BankDataController.php @@ -274,6 +274,7 @@ 'luas_bangunan' => $item->luas_bangunan, 'harga' => $item->harga, 'sumber' => $item->kategori ? ucwords(str_replace('_', ' ', $item->kategori)) : '-', + 'kategori' => $item->kategori ?? 'data_pembanding', 'nilai_pasar' => $item->nilai_pasar, 'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng, 'address' => formatAlamat($item),