Files
project-webgis/webgisdatakemiskinan/api_laporan.php
T
2026-06-11 10:16:53 +07:00

101 lines
4.3 KiB
PHP

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
echo json_encode(["status" => "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 = 'localhost';
$user = 'root';
$pass = ''; // Laragon default: kosong
$db = 'webgis_baru';
$conn = new mysqli($host, $user, $pass, $db);
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();
?>