193 lines
8.2 KiB
PHP
193 lines
8.2 KiB
PHP
<?php
|
|
// ============================================================
|
|
// API DATA KEMISKINAN (Point / Marker)
|
|
// File: api_kemiskinan.php
|
|
// Fields: nama_kk, jumlah_kk, alamat, latitude, longitude
|
|
// ============================================================
|
|
|
|
require_once 'config.php';
|
|
|
|
$method = $_SERVER['REQUEST_METHOD'];
|
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;
|
|
|
|
// ---- GET: Ambil semua data atau satu data ----
|
|
if ($method === 'GET') {
|
|
$db = getDB();
|
|
|
|
if ($id) {
|
|
$stmt = $db->prepare("SELECT id, nik, nama_kk, jumlah_kk, alamat, latitude, longitude, status_bantuan, kategori, skor_penghasilan, skor_rumah, skor_makan, tanggal_lahir, pendidikan, riwayat_penyakit FROM data_kemiskinan WHERE id = ?");
|
|
$stmt->bind_param('i', $id);
|
|
$stmt->execute();
|
|
$result = $stmt->get_result()->fetch_assoc();
|
|
if ($result) {
|
|
// Cast tipe
|
|
$result['jumlah_kk'] = (int)$result['jumlah_kk'];
|
|
$result['latitude'] = (float)$result['latitude'];
|
|
$result['longitude'] = (float)$result['longitude'];
|
|
echo json_encode($result);
|
|
} else {
|
|
http_response_code(404);
|
|
echo json_encode(['error' => 'Data kemiskinan tidak ditemukan']);
|
|
}
|
|
} else {
|
|
$result = $db->query("SELECT id, nik, nama_kk, jumlah_kk, alamat, latitude, longitude, status_bantuan, kategori, skor_penghasilan, skor_rumah, skor_makan, tanggal_lahir, pendidikan, riwayat_penyakit FROM data_kemiskinan ORDER BY id DESC");
|
|
$rows = [];
|
|
while ($row = $result->fetch_assoc()) {
|
|
$row['jumlah_kk'] = (int)$row['jumlah_kk'];
|
|
$row['latitude'] = (float)$row['latitude'];
|
|
$row['longitude'] = (float)$row['longitude'];
|
|
$rows[] = $row;
|
|
}
|
|
echo json_encode($rows);
|
|
}
|
|
$db->close();
|
|
exit();
|
|
}
|
|
|
|
// ---- POST: Tambah data kemiskinan baru ----
|
|
if ($method === 'POST') {
|
|
$input = json_decode(file_get_contents('php://input'), true);
|
|
|
|
if (empty($input['nama_kk']) || !isset($input['jumlah_kk']) || empty($input['alamat'])
|
|
|| !isset($input['latitude']) || !isset($input['longitude'])) {
|
|
http_response_code(400);
|
|
echo json_encode(['error' => 'Data tidak lengkap. Field wajib: nama_kk, jumlah_kk, alamat, latitude, longitude']);
|
|
exit();
|
|
}
|
|
|
|
$nama_kk = trim($input['nama_kk']);
|
|
$nik = trim($input['nik'] ?? '');
|
|
$jumlah_kk = max(1, (int)$input['jumlah_kk']);
|
|
$alamat = trim($input['alamat']);
|
|
$latitude = (float)$input['latitude'];
|
|
$longitude = (float)$input['longitude'];
|
|
|
|
$tanggal_lahir = isset($input['tanggal_lahir']) && $input['tanggal_lahir'] !== '' ? $input['tanggal_lahir'] : null;
|
|
$pendidikan = isset($input['pendidikan']) ? trim($input['pendidikan']) : null;
|
|
$riwayat_penyakit = isset($input['riwayat_penyakit']) ? trim($input['riwayat_penyakit']) : null;
|
|
|
|
$kategori = isset($input['kategori']) ? trim($input['kategori']) : 'Miskin';
|
|
$skor_penghasilan = isset($input['skor_penghasilan']) ? (int)$input['skor_penghasilan'] : 0;
|
|
$skor_rumah = isset($input['skor_rumah']) ? (int)$input['skor_rumah'] : 0;
|
|
$skor_makan = isset($input['skor_makan']) ? (int)$input['skor_makan'] : 0;
|
|
|
|
$db = getDB();
|
|
$stmt = $db->prepare("INSERT INTO data_kemiskinan (nama_kk, nik, jumlah_kk, alamat, latitude, longitude, kategori, skor_penghasilan, skor_rumah, skor_makan, tanggal_lahir, pendidikan, riwayat_penyakit) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
$stmt->bind_param('ssisddsiiisss', $nama_kk, $nik, $jumlah_kk, $alamat, $latitude, $longitude, $kategori, $skor_penghasilan, $skor_rumah, $skor_makan, $tanggal_lahir, $pendidikan, $riwayat_penyakit);
|
|
|
|
if ($stmt->execute()) {
|
|
$new_id = $db->insert_id;
|
|
http_response_code(201);
|
|
echo json_encode([
|
|
'message' => 'Data kemiskinan berhasil disimpan',
|
|
'id' => $new_id,
|
|
'nama_kk' => $nama_kk,
|
|
'nik' => $nik,
|
|
'jumlah_kk' => $jumlah_kk,
|
|
'alamat' => $alamat,
|
|
'latitude' => $latitude,
|
|
'longitude' => $longitude,
|
|
'status_bantuan' => 'Belum',
|
|
'kategori' => $kategori,
|
|
'skor_penghasilan' => $skor_penghasilan,
|
|
'skor_rumah' => $skor_rumah,
|
|
'skor_makan' => $skor_makan,
|
|
'tanggal_lahir' => $tanggal_lahir,
|
|
'pendidikan' => $pendidikan,
|
|
'riwayat_penyakit' => $riwayat_penyakit
|
|
]);
|
|
} else {
|
|
http_response_code(500);
|
|
echo json_encode(['error' => 'Gagal menyimpan data: ' . $stmt->error]);
|
|
}
|
|
$db->close();
|
|
exit();
|
|
}
|
|
|
|
// ---- PUT: Update data kemiskinan ----
|
|
if ($method === 'PUT') {
|
|
if (!$id) {
|
|
http_response_code(400);
|
|
echo json_encode(['error' => 'ID diperlukan untuk update']);
|
|
exit();
|
|
}
|
|
|
|
$input = json_decode(file_get_contents('php://input'), true);
|
|
$db = getDB();
|
|
|
|
// Update posisi saja (drag marker)
|
|
if (isset($input['latitude']) && isset($input['longitude']) && !isset($input['nama_kk'])) {
|
|
$latitude = (float)$input['latitude'];
|
|
$longitude = (float)$input['longitude'];
|
|
$stmt = $db->prepare("UPDATE data_kemiskinan SET latitude = ?, longitude = ? WHERE id = ?");
|
|
$stmt->bind_param('ddi', $latitude, $longitude, $id);
|
|
} else {
|
|
// Full update
|
|
$nama_kk = trim($input['nama_kk'] ?? '');
|
|
$nik = trim($input['nik'] ?? '');
|
|
$jumlah_kk = max(1, (int)($input['jumlah_kk'] ?? 1));
|
|
$alamat = trim($input['alamat'] ?? '');
|
|
$latitude = (float)($input['latitude'] ?? 0);
|
|
$longitude = (float)($input['longitude'] ?? 0);
|
|
|
|
$tanggal_lahir = isset($input['tanggal_lahir']) && $input['tanggal_lahir'] !== '' ? $input['tanggal_lahir'] : null;
|
|
$pendidikan = isset($input['pendidikan']) ? trim($input['pendidikan']) : null;
|
|
$riwayat_penyakit = isset($input['riwayat_penyakit']) ? trim($input['riwayat_penyakit']) : null;
|
|
|
|
$kategori = isset($input['kategori']) ? trim($input['kategori']) : 'Miskin';
|
|
$skor_penghasilan = isset($input['skor_penghasilan']) ? (int)$input['skor_penghasilan'] : 0;
|
|
$skor_rumah = isset($input['skor_rumah']) ? (int)$input['skor_rumah'] : 0;
|
|
$skor_makan = isset($input['skor_makan']) ? (int)$input['skor_makan'] : 0;
|
|
|
|
if (empty($nama_kk) || empty($alamat)) {
|
|
http_response_code(400);
|
|
echo json_encode(['error' => 'nama_kk dan alamat wajib diisi']);
|
|
exit();
|
|
}
|
|
|
|
$stmt = $db->prepare("UPDATE data_kemiskinan SET nama_kk = ?, nik = ?, jumlah_kk = ?, alamat = ?, latitude = ?, longitude = ?, kategori = ?, skor_penghasilan = ?, skor_rumah = ?, skor_makan = ?, tanggal_lahir = ?, pendidikan = ?, riwayat_penyakit = ? WHERE id = ?");
|
|
$stmt->bind_param('ssisddsiiisssi', $nama_kk, $nik, $jumlah_kk, $alamat, $latitude, $longitude, $kategori, $skor_penghasilan, $skor_rumah, $skor_makan, $tanggal_lahir, $pendidikan, $riwayat_penyakit, $id);
|
|
}
|
|
|
|
if ($stmt->execute()) {
|
|
echo json_encode(['message' => 'Data kemiskinan berhasil diperbarui', 'id' => $id]);
|
|
} else {
|
|
http_response_code(500);
|
|
echo json_encode(['error' => 'Gagal memperbarui data: ' . $stmt->error]);
|
|
}
|
|
$db->close();
|
|
exit();
|
|
}
|
|
|
|
// ---- DELETE: Hapus data kemiskinan ----
|
|
if ($method === 'DELETE') {
|
|
if (!$id) {
|
|
http_response_code(400);
|
|
echo json_encode(['error' => 'ID diperlukan untuk hapus']);
|
|
exit();
|
|
}
|
|
|
|
$db = getDB();
|
|
$stmt = $db->prepare("DELETE FROM data_kemiskinan WHERE id = ?");
|
|
$stmt->bind_param('i', $id);
|
|
|
|
if ($stmt->execute()) {
|
|
if ($stmt->affected_rows > 0) {
|
|
echo json_encode(['message' => 'Data kemiskinan berhasil dihapus', 'id' => $id]);
|
|
} else {
|
|
http_response_code(404);
|
|
echo json_encode(['error' => 'Data tidak ditemukan']);
|
|
}
|
|
} else {
|
|
http_response_code(500);
|
|
echo json_encode(['error' => 'Gagal menghapus data: ' . $stmt->error]);
|
|
}
|
|
$db->close();
|
|
exit();
|
|
}
|
|
|
|
// Method tidak dikenal
|
|
http_response_code(405);
|
|
echo json_encode(['error' => 'Method tidak diizinkan']);
|
|
?>
|