102 lines
4.4 KiB
PHP
102 lines
4.4 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 = 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();
|
|
?>
|