From 606f6f4de720e7f8df307b2909cf9743648b7f7c Mon Sep 17 00:00:00 2001
From: miaaurl
Date: Sat, 13 Jun 2026 21:22:42 +0700
Subject: [PATCH] fix: import wasnt working properly
---
poverty-map/api.php | 43 ++++++++++++++++++++++++++++++++++--------
poverty-map/import.php | 2 +-
poverty-map/index.php | 33 ++++++++++++++++++--------------
3 files changed, 55 insertions(+), 23 deletions(-)
diff --git a/poverty-map/api.php b/poverty-map/api.php
index de5b234..957bfda 100644
--- a/poverty-map/api.php
+++ b/poverty-map/api.php
@@ -46,10 +46,15 @@ function updateCoverage($conn) {
$penduduk = $conn->query("SELECT * FROM penduduk_miskin");
while ($p = $penduduk->fetch_assoc()) {
+ if ($p['lat'] === null || $p['lng'] === null) continue;
+
$terdekat_id = "NULL";
$jarak_min = INF;
foreach ($rumah_ibadah_list as $ri) {
+ if ($ri['lat'] === null || $ri['lng'] === null) continue;
+ if ((float)$ri['lat'] === 0.0 && (float)$ri['lng'] === 0.0) continue;
+
$jarak = hitungJarak($p['lat'], $p['lng'], $ri['lat'], $ri['lng']);
if ($jarak <= $ri['radius'] && $jarak < $jarak_min) {
$jarak_min = $jarak;
@@ -527,24 +532,46 @@ if ($action == 'delete_user' && $_SERVER['REQUEST_METHOD'] == 'POST') {
// ── GET GEOCODING QUEUE ───────────────────────────────────────────────────────
if ($action == 'get_geocoding_queue') {
requireAdmin($role);
- $res = $conn->query("
- SELECT id, nama_kepala, jumlah_anggota, alamat, status_geocoding
+ $rows = [];
+
+ $res1 = $conn->query("
+ SELECT id, nama_kepala AS nama, alamat, status_geocoding
FROM penduduk_miskin
WHERE lat IS NULL OR lng IS NULL
ORDER BY id DESC
");
- $rows = [];
- while ($row = $res->fetch_assoc()) $rows[] = $row;
+ while ($row = $res1->fetch_assoc()) {
+ $row['tipe'] = 'penduduk';
+ $rows[] = $row;
+ }
+
+ $res2 = $conn->query("
+ SELECT id, nama, alamat, NULL AS status_geocoding
+ FROM rumah_ibadah
+ WHERE (lat IS NULL OR lng IS NULL) OR (lat = 0 AND lng = 0)
+ ORDER BY id DESC
+ ");
+ while ($row = $res2->fetch_assoc()) {
+ $row['tipe'] = 'ri';
+ $rows[] = $row;
+ }
+
echo json_encode($rows);
}
// ── UPDATE LOKASI (dari antrean geocoding) ────────────────────────────────────
if ($action == 'update_lokasi' && $_SERVER['REQUEST_METHOD'] == 'POST') {
requireAdmin($role);
- $id = (int)$_POST['id'];
- $lat = (float)$_POST['lat'];
- $lng = (float)$_POST['lng'];
- $conn->query("UPDATE penduduk_miskin SET lat=$lat, lng=$lng, status_geocoding='sukses' WHERE id=$id");
+ $id = (int)$_POST['id'];
+ $lat = (float)$_POST['lat'];
+ $lng = (float)$_POST['lng'];
+ $tipe = $_POST['tipe'] ?? 'penduduk';
+
+ if ($tipe === 'ri') {
+ $conn->query("UPDATE rumah_ibadah SET lat=$lat, lng=$lng WHERE id=$id");
+ } else {
+ $conn->query("UPDATE penduduk_miskin SET lat=$lat, lng=$lng, status_geocoding='sukses' WHERE id=$id");
+ }
updateCoverage($conn);
echo json_encode(['status' => 'success']);
}
diff --git a/poverty-map/import.php b/poverty-map/import.php
index e71a589..4257259 100644
--- a/poverty-map/import.php
+++ b/poverty-map/import.php
@@ -151,7 +151,7 @@ while (($row = fgetcsv($handle, 0, $delim)) !== false) {
// Simpan tanpa koordinat — admin klik peta untuk melengkapi
$conn->query("INSERT INTO rumah_ibadah (nama, jenis, alamat, radius, lat, lng)
- VALUES ('$nama', '$jenis', '$alamat', $radius, NULL, NULL)");
+ VALUES ('$nama', '$jenis', '$alamat', $radius, 0, 0)");
$sukses++;
sse('row', ['num'=>$row_num,'total'=>$total,'status'=>'sukses','nama'=>$row[0],
'msg'=>"$jenis · radius {$radius}m · koordinat perlu dilengkapi manual"]);
diff --git a/poverty-map/index.php b/poverty-map/index.php
index cbed844..c442276 100644
--- a/poverty-map/index.php
+++ b/poverty-map/index.php
@@ -336,7 +336,7 @@ $is_koordinator = ($role === 'koordinator');
⚠
0 data belum punya koordinat
- (hasil import CSV yang gagal geocoding).
+ (hasil import CSV, koordinat belum dilengkapi).
@@ -388,7 +388,7 @@ $is_koordinator = ($role === 'koordinator');
▼
-
Data ini gagal di-geocoding otomatis. Klik "Bidik di Peta" lalu klik lokasi rumah yang sesuai.
+
Data hasil import CSV belum punya koordinat. Klik "Bidik di Peta" lalu klik lokasi yang sesuai.
@@ -725,14 +725,14 @@ $is_koordinator = ($role === 'koordinator');
Format kolom (Penduduk):
Nama KK · Jml Anggota · Alamat · RT · RW · Kelurahan · Kecamatan
• Baris pertama (header) diabaikan • Delimiter koma atau titik koma
-
• Jika geocoding gagal → masuk Antrean Validasi Lokasi
+
• Koordinat tidak di-geocode otomatis → lengkapi via "Bidik di Peta" pada Antrean Validasi Lokasi
Format kolom (Rumah Ibadah):
Nama · Jenis · Alamat · Radius(opsional)
• Jenis: Masjid / Gereja Protestan / Gereja Katolik / Vihara / Pura / Kelenteng
• Jenis kosong → default Masjid • Radius kosong → default 500m
-
• RI yang gagal geocoding tidak diinsert
+
• Semua RI diinsert tanpa koordinat → lengkapi via "Bidik di Peta" pada Antrean Validasi Lokasi
-
+