"error", "pesan" => "Akses ditolak. Silakan login."]); exit; } // ============================================= // api_laporan.php // Menerima laporan publik dari lapor.php // Status awal: "menunggu" (belum tampil di peta) // ============================================= header('Content-Type: application/json'); header('Access-Control-Allow-Origin: *'); // ——— KONEKSI DATABASE ——— // Sesuaikan dengan konfigurasi Laragon kamu $host = getenv('DB_HOST') ?: 'localhost'; $user = getenv('DB_USER') ?: 'root'; $pass = getenv('DB_PASSWORD') ?: ''; $db = getenv('DB_NAME') ?: 'webgis_baru'; $port = getenv('DB_PORT') ?: '3306'; $conn = new mysqli($host, $user, $pass, $db, $port); if ($conn->connect_error) { echo json_encode(['status' => 'error', 'pesan' => 'Koneksi database gagal']); exit; } $conn->set_charset('utf8mb4'); // ——— PASTIKAN TABEL LAPORAN ADA ——— // Tabel ini terpisah dari warga_miskin. // Data masuk dulu ke sini, operator verifikasi, // baru dipindahkan ke warga_miskin. $conn->query(" CREATE TABLE IF NOT EXISTS laporan_publik ( id INT AUTO_INCREMENT PRIMARY KEY, lat DECIMAL(10,7) NOT NULL, lng DECIMAL(10,7) NOT NULL, nama_kk VARCHAR(255) NOT NULL, jumlah_anggota INT NOT NULL, alamat TEXT NOT NULL, tanggal_lahir DATE NULL, pendidikan_terakhir ENUM('Tidak Sekolah','SD','SMP','SMA','D3','S1','S2','S3') NULL, pekerjaan VARCHAR(100) NULL, riwayat_penyakit TEXT NULL, kepemilikan_jaminan ENUM('BPJS Kesehatan','KIS','BPJS Ketenagakerjaan','Tidak Ada') NULL, nama_pelapor VARCHAR(255) NOT NULL, hp_pelapor VARCHAR(20) NULL, hubungan_pelapor VARCHAR(50) NULL, keterangan TEXT NULL, status ENUM('menunggu','disetujui','ditolak') DEFAULT 'menunggu', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 "); // ——— VALIDASI INPUT ——— $lat = floatval($_POST['lat'] ?? 0); $lng = floatval($_POST['lng'] ?? 0); $nama_kk = trim($conn->real_escape_string($_POST['nama_kk'] ?? '')); $jumlah_anggota = intval($_POST['jumlah_anggota'] ?? 0); $alamat = trim($conn->real_escape_string($_POST['alamat'] ?? '')); $nama_pelapor = trim($conn->real_escape_string($_POST['nama_pelapor'] ?? '')); if (!$lat || !$lng || !$nama_kk || $jumlah_anggota < 1 || !$alamat || !$nama_pelapor) { echo json_encode(['status' => 'error', 'pesan' => 'Data wajib tidak lengkap']); exit; } // ——— DATA OPSIONAL ——— $tgl_lahir = !empty($_POST['tanggal_lahir']) ? "'" . $conn->real_escape_string($_POST['tanggal_lahir']) . "'" : 'NULL'; $pendidikan = !empty($_POST['pendidikan_terakhir']) ? "'" . $conn->real_escape_string($_POST['pendidikan_terakhir']) . "'" : 'NULL'; $pekerjaan = trim($conn->real_escape_string($_POST['pekerjaan'] ?? '')); $penyakit = trim($conn->real_escape_string($_POST['riwayat_penyakit'] ?? '')); $jaminan = !empty($_POST['kepemilikan_jaminan']) ? "'" . $conn->real_escape_string($_POST['kepemilikan_jaminan']) . "'" : 'NULL'; $hp = trim($conn->real_escape_string($_POST['hp_pelapor'] ?? '')); $hubungan = trim($conn->real_escape_string($_POST['hubungan_pelapor'] ?? '')); $keterangan = trim($conn->real_escape_string($_POST['keterangan'] ?? '')); // ——— INSERT ——— $sql = " INSERT INTO laporan_publik (lat, lng, nama_kk, jumlah_anggota, alamat, tanggal_lahir, pendidikan_terakhir, pekerjaan, riwayat_penyakit, kepemilikan_jaminan, nama_pelapor, hp_pelapor, hubungan_pelapor, keterangan, status) VALUES ($lat, $lng, '$nama_kk', $jumlah_anggota, '$alamat', $tgl_lahir, $pendidikan, '$pekerjaan', '$penyakit', $jaminan, '$nama_pelapor', '$hp', '$hubungan', '$keterangan', 'menunggu') "; if ($conn->query($sql)) { $newId = $conn->insert_id; echo json_encode(['status' => 'ok', 'id' => $newId]); } else { echo json_encode(['status' => 'error', 'pesan' => 'Gagal menyimpan: ' . $conn->error]); } $conn->close(); ?>