130 lines
4.3 KiB
PHP
130 lines
4.3 KiB
PHP
<?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']);
|