Files
2026-06-09 19:02:22 +07:00

130 lines
4.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// ============================================================
// api_bantuan.php CRUD Riwayat Bantuan Kemiskinan
// ============================================================
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
// GET: Ambil riwayat bantuan berdasarkan id_kemiskinan
if ($method === 'GET') {
$id_kemiskinan = isset($_GET['id_kemiskinan']) ? (int)$_GET['id_kemiskinan'] : 0;
if (!$id_kemiskinan) {
http_response_code(400);
echo json_encode(['error' => 'Parameter id_kemiskinan wajib diisi']);
exit();
}
$db = getDB();
$stmt = $db->prepare("SELECT * FROM riwayat_bantuan WHERE id_kemiskinan = ? ORDER BY tanggal DESC, created_at DESC");
$stmt->bind_param('i', $id_kemiskinan);
$stmt->execute();
$result = $stmt->get_result();
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
echo json_encode($data);
$db->close();
exit();
}
// POST: Tambah riwayat bantuan baru
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$id_kemiskinan = isset($body['id_kemiskinan']) ? (int)$body['id_kemiskinan'] : 0;
$pemberi = isset($body['pemberi']) ? trim($body['pemberi']) : '';
$jenis_bantuan = isset($body['jenis_bantuan']) ? trim($body['jenis_bantuan']) : '';
$tanggal = isset($body['tanggal']) ? trim($body['tanggal']) : '';
$keterangan = isset($body['keterangan']) ? trim($body['keterangan']) : '';
if (!$id_kemiskinan || !$pemberi || !$jenis_bantuan || !$tanggal) {
http_response_code(400);
echo json_encode(['error' => 'id_kemiskinan, pemberi, jenis_bantuan, dan tanggal wajib diisi']);
exit();
}
$db = getDB();
try {
$db->begin_transaction();
// 1. Insert ke riwayat_bantuan
$stmt = $db->prepare("INSERT INTO riwayat_bantuan (id_kemiskinan, pemberi, jenis_bantuan, tanggal, keterangan) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('issss', $id_kemiskinan, $pemberi, $jenis_bantuan, $tanggal, $keterangan);
$stmt->execute();
$id_riwayat = $db->insert_id;
// 2. Update status_bantuan di tabel data_kemiskinan menjadi 'Sudah'
$stmtUpdate = $db->prepare("UPDATE data_kemiskinan SET status_bantuan = 'Sudah' WHERE id = ?");
$stmtUpdate->bind_param('i', $id_kemiskinan);
$stmtUpdate->execute();
$db->commit();
echo json_encode([
'success' => true,
'message' => 'Berhasil menambahkan catatan bantuan',
'id' => $id_riwayat,
'status_bantuan' => 'Sudah'
]);
} catch (Exception $e) {
$db->rollback();
http_response_code(500);
echo json_encode(['error' => 'Gagal menyimpan data: ' . $e->getMessage()]);
}
$db->close();
exit();
}
// DELETE: Hapus catatan bantuan
if ($method === 'DELETE') {
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$id_kemiskinan = isset($_GET['id_kemiskinan']) ? (int)$_GET['id_kemiskinan'] : 0;
if (!$id) {
http_response_code(400);
echo json_encode(['error' => 'Parameter id wajib diisi']);
exit();
}
$db = getDB();
try {
$db->begin_transaction();
$stmt = $db->prepare("DELETE FROM riwayat_bantuan WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
// Cek apakah masih ada bantuan lain
$stmtCek = $db->prepare("SELECT COUNT(*) AS total FROM riwayat_bantuan WHERE id_kemiskinan = ?");
$stmtCek->bind_param('i', $id_kemiskinan);
$stmtCek->execute();
$res = $stmtCek->get_result()->fetch_assoc();
$count = $res['total'];
$status_baru = 'Sudah';
if ($count == 0) {
$stmtUpdate = $db->prepare("UPDATE data_kemiskinan SET status_bantuan = 'Belum' WHERE id = ?");
$stmtUpdate->bind_param('i', $id_kemiskinan);
$stmtUpdate->execute();
$status_baru = 'Belum';
}
$db->commit();
echo json_encode(['success' => true, 'status_bantuan' => $status_baru]);
} catch (Exception $e) {
$db->rollback();
http_response_code(500);
echo json_encode(['error' => 'Gagal menghapus data']);
}
$db->close();
exit();
}
http_response_code(405);
echo json_encode(['error' => 'Method tidak diizinkan']);