0.000001 || abs((float)$lng - $lngBefore) > 0.000001); if ($_SESSION['role'] === 'admin_rumah_ibadah') { $globalNearest = get_nearest_rumah_ibadah((float)$lat, (float)$lng, 300); $ownNearest = get_nearest_rumah_ibadah((float)$lat, (float)$lng, 300, (int)$_SESSION['user_id']); if (!$ownNearest) json_response('err', 'Lokasi baru di luar radius 300 meter seluruh rumah ibadah Anda.'); if ($globalNearest && (int)$globalNearest['id'] !== (int)$ownNearest['id']) { json_response('err', 'Lokasi baru lebih dekat ke rumah ibadah lain. Sistem hanya boleh mengaitkan penerima ke rumah ibadah terdekat.', [], 409); } $rumah_ibadah_id = (int)$ownNearest['id']; $jarak_meter = (float)$ownNearest['jarak_meter']; } else { $nearest = get_nearest_rumah_ibadah((float)$lat, (float)$lng, 300); if ($nearest) { $rumah_ibadah_id = (int)$nearest['id']; $jarak_meter = (float)$nearest['jarak_meter']; } } // FIX: pisahkan cabang UPDATE agar rumah_ibadah_id/jarak_meter NULL tersimpan benar, bukan 0. if ($rumah_ibadah_id !== null) { $stmt = $koneksi->prepare("UPDATE penerima_bantuan SET rumah_ibadah_id=?, nama_penerima=?, nik=?, no_hp=?, alamat=?, pekerjaan=?, penghasilan=?, jumlah_tanggungan=?, kondisi_rumah=?, jenis_bantuan=?, latitude=?, longitude=?, jarak_meter=? WHERE id=?"); $stmt->bind_param('isssssiissdddi', $rumah_ibadah_id, $nama, $nik, $no_hp, $alamat, $pekerjaan, $penghasilan, $jumlah_tanggungan, $kondisi_rumah, $jenis_bantuan, $lat, $lng, $jarak_meter, $id); } else { $stmt = $koneksi->prepare("UPDATE penerima_bantuan SET rumah_ibadah_id=NULL, nama_penerima=?, nik=?, no_hp=?, alamat=?, pekerjaan=?, penghasilan=?, jumlah_tanggungan=?, kondisi_rumah=?, jenis_bantuan=?, latitude=?, longitude=?, jarak_meter=NULL WHERE id=?"); $stmt->bind_param('sssssiissddi', $nama, $nik, $no_hp, $alamat, $pekerjaan, $penghasilan, $jumlah_tanggungan, $kondisi_rumah, $jenis_bantuan, $lat, $lng, $id); } if (!$stmt->execute()) json_response('err', 'Gagal mengubah data: ' . $koneksi->error); // FIX: catat riwayat saat lokasi berubah agar ada jejak audit. if ($lokasiBerubar) { $riNama = $rumah_ibadah_id ? ('RI ID ' . $rumah_ibadah_id) : 'belum terhubung RI'; insert_riwayat_status($id, $penerima['status_pengajuan'], $penerima['status_pengajuan'], "Lokasi penerima diperbarui. RI baru: $riNama, jarak: " . ($jarak_meter ?? 'N/A') . " m."); } json_response('ok', 'Data penerima berhasil diubah.', get_penerima_by_id($id)); ?>