48 lines
1.9 KiB
PHP
48 lines
1.9 KiB
PHP
<?php
|
|
// ================================================================
|
|
// API: Anggota Keluarga
|
|
// ================================================================
|
|
require_once __DIR__ . '/../config/database.php';
|
|
require_once __DIR__ . '/../includes/functions.php';
|
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Access-Control-Allow-Origin: *');
|
|
|
|
$db = getDB();
|
|
$method = $_SERVER['REQUEST_METHOD'];
|
|
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;
|
|
$pid = isset($_GET['penduduk_id']) ? (int)$_GET['penduduk_id'] : null;
|
|
|
|
if ($method === 'GET') {
|
|
if (!$pid) jsonResponse(['success' => false, 'message' => 'penduduk_id wajib'], 400);
|
|
$stmt = $db->prepare("SELECT * FROM anggota_keluarga WHERE penduduk_id = ? ORDER BY id");
|
|
$stmt->execute([$pid]);
|
|
jsonResponse(['success' => true, 'data' => $stmt->fetchAll()]);
|
|
}
|
|
|
|
if ($method === 'POST') {
|
|
$body = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
if (empty($body['penduduk_id']) || empty($body['nama'])) {
|
|
jsonResponse(['success' => false, 'message' => 'penduduk_id dan nama wajib'], 422);
|
|
}
|
|
$stmt = $db->prepare("INSERT INTO anggota_keluarga (penduduk_id,nama,hubungan,umur,pekerjaan,keterangan) VALUES (?,?,?,?,?,?)");
|
|
$stmt->execute([
|
|
(int)$body['penduduk_id'],
|
|
sanitize($body['nama'] ?? ''),
|
|
sanitize($body['hubungan'] ?? ''),
|
|
!empty($body['umur']) ? (int)$body['umur'] : null,
|
|
sanitize($body['pekerjaan'] ?? ''),
|
|
sanitize($body['keterangan'] ?? ''),
|
|
]);
|
|
jsonResponse(['success' => true, 'id' => $db->lastInsertId()], 201);
|
|
}
|
|
|
|
if ($method === 'DELETE') {
|
|
if (!$id) jsonResponse(['success' => false, 'message' => 'id wajib'], 400);
|
|
$stmt = $db->prepare("DELETE FROM anggota_keluarga WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
jsonResponse(['success' => true]);
|
|
}
|
|
|
|
jsonResponse(['success' => false, 'message' => 'Method tidak didukung'], 405);
|