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']); ?>