Initial commit - clean and ready for Coolify
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
<?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();
|
||||
?>
|
||||
Reference in New Issue
Block a user