add file
This commit is contained in:
+168
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$tipe = $_POST['tipe'] ?? '';
|
||||
|
||||
// ===== RUMAH IBADAH =====
|
||||
if ($tipe === 'ibadah') {
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$jenis = $_POST['jenis'] ?? 'lainnya';
|
||||
$kontak = $_POST['kontak'] ?? '';
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
$radius = (float)($_POST['radius'] ?? 500);
|
||||
|
||||
if (!$nama) { echo json_encode(["status"=>"error","msg"=>"Nama tidak boleh kosong"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO rumah_ibadah (nama,jenis,kontak,alamat,lat,lng,radius) VALUES (?,?,?,?,?,?,?)");
|
||||
$stmt->bind_param("ssssddd", $nama,$jenis,$kontak,$alamat,$lat,$lng,$radius);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== PENDUDUK =====
|
||||
elseif ($tipe === 'penduduk') {
|
||||
$nik = trim($_POST['nik'] ?? '');
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$jk = $_POST['jenis_kelamin'] ?? 'L';
|
||||
$tgl_lahir = !empty($_POST['tanggal_lahir']) ? $_POST['tanggal_lahir'] : null;
|
||||
$status_kel = $_POST['status_keluarga'] ?? 'lainnya';
|
||||
$status_kawin = $_POST['status_perkawinan'] ?? 'belum_kawin';
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$no_hp = $_POST['no_hp'] ?? '';
|
||||
$pekerjaan = $_POST['pekerjaan'] ?? '';
|
||||
$penghasilan = (float)($_POST['penghasilan'] ?? 0);
|
||||
$status_ekonomi = $_POST['status_ekonomi'] ?? 'rentan';
|
||||
$pend_terakhir = $_POST['pendidikan_terakhir'] ?? 'tidak_sekolah';
|
||||
$status_pend = $_POST['status_pendidikan'] ?? 'tidak_sekolah';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$nik || !$nama) {
|
||||
echo json_encode(["status"=>"error","msg"=>"NIK dan Nama wajib diisi"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Cari rumah ibadah terdekat otomatis
|
||||
$rumah_ibadah_id = null;
|
||||
if ($lat && $lng) {
|
||||
$s = $conn->prepare("SELECT id FROM rumah_ibadah ORDER BY (6371*acos(cos(radians(?))*cos(radians(lat))*cos(radians(lng)-radians(?))+sin(radians(?))*sin(radians(lat)))) ASC LIMIT 1");
|
||||
$s->bind_param("ddd", $lat, $lng, $lat);
|
||||
$s->execute();
|
||||
$row = $s->get_result()->fetch_assoc();
|
||||
$rumah_ibadah_id = $row ? (int)$row['id'] : null;
|
||||
$s->close();
|
||||
}
|
||||
|
||||
// INSERT — semua 16 kolom, tipe dijaga ketat
|
||||
// Gunakan query langsung dengan escape untuk menghindari masalah nullable
|
||||
$nik_e = $conn->real_escape_string($nik);
|
||||
$nama_e = $conn->real_escape_string($nama);
|
||||
$jk_e = $conn->real_escape_string($jk);
|
||||
$tgl_e = $tgl_lahir ? "'".$conn->real_escape_string($tgl_lahir)."'" : 'NULL';
|
||||
$stkel_e = $conn->real_escape_string($status_kel);
|
||||
$stkaw_e = $conn->real_escape_string($status_kawin);
|
||||
$almt_e = $conn->real_escape_string($alamat);
|
||||
$hp_e = $conn->real_escape_string($no_hp);
|
||||
$pkrj_e = $conn->real_escape_string($pekerjaan);
|
||||
$ekn_e = $conn->real_escape_string($status_ekonomi);
|
||||
$pend_e = $conn->real_escape_string($pend_terakhir);
|
||||
$spnd_e = $conn->real_escape_string($status_pend);
|
||||
$rid_e = $rumah_ibadah_id ? (int)$rumah_ibadah_id : 'NULL';
|
||||
|
||||
$sql = "INSERT INTO penduduk
|
||||
(nik,nama,jenis_kelamin,tanggal_lahir,status_keluarga,status_perkawinan,
|
||||
alamat,no_hp,pekerjaan,penghasilan,status_ekonomi,
|
||||
pendidikan_terakhir,status_pendidikan,lat,lng,rumah_ibadah_id)
|
||||
VALUES
|
||||
('{$nik_e}','{$nama_e}','{$jk_e}',{$tgl_e},'{$stkel_e}','{$stkaw_e}',
|
||||
'{$almt_e}','{$hp_e}','{$pkrj_e}',{$penghasilan},'{$ekn_e}',
|
||||
'{$pend_e}','{$spnd_e}',{$lat},{$lng},{$rid_e})";
|
||||
|
||||
$stmt = $conn; // dummy untuk cek execute
|
||||
|
||||
if ($conn->query($sql)) {
|
||||
$new_id = (int)$conn->insert_id;
|
||||
// Log
|
||||
$uid = (int)($_POST['user_id'] ?? 0);
|
||||
if ($uid) {
|
||||
$l = $conn->prepare("INSERT INTO log_aktivitas (user_id,aksi,tabel,record_id,detail,ip) VALUES (?,?,?,?,?,?)");
|
||||
$aksi='tambah_penduduk'; $tbl='penduduk'; $det="Tambah penduduk: $nama"; $ip=$_SERVER['REMOTE_ADDR']??'';
|
||||
$l->bind_param("ississ",$uid,$aksi,$tbl,$new_id,$det,$ip);
|
||||
$l->execute();
|
||||
}
|
||||
echo json_encode(["status"=>"success","id"=>$new_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$conn->error]);
|
||||
}
|
||||
}
|
||||
|
||||
// ===== LAPORAN =====
|
||||
elseif ($tipe === 'laporan') {
|
||||
$nama_pelapor = trim($_POST['nama_pelapor'] ?? 'Anonim') ?: 'Anonim';
|
||||
$deskripsi = trim($_POST['deskripsi'] ?? '');
|
||||
$urgensi = $_POST['urgensi'] ?? 'sedang';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$deskripsi) { echo json_encode(["status"=>"error","msg"=>"Deskripsi wajib diisi"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO laporan (nama_pelapor,deskripsi,lat,lng,urgensi) VALUES (?,?,?,?,?)");
|
||||
$stmt->bind_param("ssdds", $nama_pelapor,$deskripsi,$lat,$lng,$urgensi);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== BANTUAN =====
|
||||
elseif ($tipe === 'bantuan') {
|
||||
$pid = (int)($_POST['penduduk_id'] ?? 0);
|
||||
$jid = (int)($_POST['jenis_bantuan_id'] ?? 0);
|
||||
$src = $_POST['sumber_bantuan'] ?? '';
|
||||
$tgl = $_POST['tanggal'] ?? date('Y-m-d');
|
||||
$jml = (float)($_POST['jumlah'] ?? 0);
|
||||
$cat = $_POST['catatan'] ?? '';
|
||||
$stat = $_POST['status'] ?? 'direncanakan';
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO histori_bantuan (penduduk_id,jenis_bantuan_id,sumber_bantuan,tanggal,jumlah,catatan,status) VALUES (?,?,?,?,?,?,?)");
|
||||
$stmt->bind_param("iissdss",$pid,$jid,$src,$tgl,$jml,$cat,$stat);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== KELUARGA =====
|
||||
elseif ($tipe === 'keluarga') {
|
||||
$no_kk = trim($_POST['no_kk'] ?? '');
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$no_kk) { echo json_encode(["status"=>"error","msg"=>"No. KK wajib diisi"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO keluarga (no_kk,alamat,lat,lng) VALUES (?,?,?,?)");
|
||||
$stmt->bind_param("ssdd",$no_kk,$alamat,$lat,$lng);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["status"=>"error","msg"=>"Tipe tidak dikenal: $tipe"]);
|
||||
}
|
||||
Reference in New Issue
Block a user