65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
// ============================================================
|
|
// api/bantuan.php — CRUD Histori Bantuan Sosial
|
|
// ============================================================
|
|
require_once __DIR__ . '/config.php';
|
|
|
|
$method = $_SERVER['REQUEST_METHOD'];
|
|
$db = getDB();
|
|
|
|
// Bantuan hanya bisa diakses oleh user yang login
|
|
$user = requireAuth();
|
|
|
|
// ── GET: List bantuan untuk warga tertentu ──────────────────
|
|
if ($method === 'GET') {
|
|
$wargaId = getParam('warga_id');
|
|
if (!$wargaId) jsonError('ID warga wajib disertakan.');
|
|
|
|
$stmt = $db->prepare(
|
|
"SELECT id, tanggal, jenis, nominal, sumber_dana AS sumber, keterangan
|
|
FROM histori_bantuan
|
|
WHERE warga_id = ?
|
|
ORDER BY tanggal DESC"
|
|
);
|
|
$stmt->execute([$wargaId]);
|
|
jsonOk($stmt->fetchAll());
|
|
}
|
|
|
|
// ── POST: Tambah bantuan baru ────────────────────────────────
|
|
if ($method === 'POST') {
|
|
requireEdit();
|
|
$d = body();
|
|
|
|
if (empty($d['warga_id'])) jsonError('ID warga wajib diisi.');
|
|
if (empty($d['tanggal'])) jsonError('Tanggal wajib diisi.');
|
|
if (empty($d['jenis'])) jsonError('Program bantuan wajib dipilih.');
|
|
|
|
$stmt = $db->prepare(
|
|
"INSERT INTO histori_bantuan (warga_id, tanggal, jenis, nominal, sumber_dana, keterangan, created_by)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?)"
|
|
);
|
|
$stmt->execute([
|
|
$d['warga_id'],
|
|
$d['tanggal'],
|
|
$d['jenis'],
|
|
$d['nominal'] ?? 0,
|
|
$d['sumber_dana'] ?? '',
|
|
$d['keterangan'] ?? '',
|
|
$user['id']
|
|
]);
|
|
|
|
jsonOk(['id' => $db->lastInsertId()], 'Data bantuan berhasil ditambahkan');
|
|
}
|
|
|
|
// ── DELETE: Hapus bantuan ────────────────────────────────────
|
|
if ($method === 'DELETE') {
|
|
requireEdit();
|
|
$id = getParam('id');
|
|
if (!$id) jsonError('ID bantuan wajib disertakan.');
|
|
|
|
$db->prepare("DELETE FROM histori_bantuan WHERE id = ?")->execute([$id]);
|
|
jsonOk(null, 'Data bantuan berhasil dihapus');
|
|
}
|
|
|
|
jsonError('Method tidak valid', 405);
|