initial commit
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
// api/log_bantuan.php
|
||||
require_once __DIR__ . '/config/database.php';
|
||||
require_once __DIR__ . '/helpers/response.php';
|
||||
setCORSHeaders();
|
||||
|
||||
$db = getDB();
|
||||
$method = getMethod();
|
||||
requireWriteAuth($method);
|
||||
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||
$pmId = isset($_GET['penduduk_miskin_id']) ? (int)$_GET['penduduk_miskin_id'] : 0;
|
||||
|
||||
switch ($method) {
|
||||
|
||||
case 'GET':
|
||||
if ($pmId > 0) {
|
||||
// Semua log untuk satu penduduk miskin
|
||||
$stmt = $db->prepare(
|
||||
"SELECT lb.*,
|
||||
ri.nama AS nama_rumah_ibadah,
|
||||
ri.jenis AS jenis_rumah_ibadah
|
||||
FROM log_bantuan lb
|
||||
JOIN rumah_ibadah ri ON ri.id = lb.rumah_ibadah_id
|
||||
WHERE lb.penduduk_miskin_id = ?
|
||||
ORDER BY lb.tanggal_bantuan DESC"
|
||||
);
|
||||
$stmt->bind_param('i', $pmId);
|
||||
$stmt->execute();
|
||||
$rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
|
||||
sendSuccess($rows);
|
||||
} elseif ($id > 0) {
|
||||
$stmt = $db->prepare(
|
||||
"SELECT lb.*,
|
||||
ri.nama AS nama_rumah_ibadah,
|
||||
pm.nama AS nama_penduduk
|
||||
FROM log_bantuan lb
|
||||
JOIN rumah_ibadah ri ON ri.id = lb.rumah_ibadah_id
|
||||
JOIN penduduk_miskin pm ON pm.id = lb.penduduk_miskin_id
|
||||
WHERE lb.id = ?"
|
||||
);
|
||||
$stmt->bind_param('i', $id);
|
||||
$stmt->execute();
|
||||
$row = $stmt->get_result()->fetch_assoc();
|
||||
$row ? sendSuccess($row) : sendError('Data tidak ditemukan', 404);
|
||||
} else {
|
||||
// Semua log bantuan dengan statistik
|
||||
$sql = "SELECT lb.*,
|
||||
ri.nama AS nama_rumah_ibadah,
|
||||
pm.nama AS nama_penduduk
|
||||
FROM log_bantuan lb
|
||||
JOIN rumah_ibadah ri ON ri.id = lb.rumah_ibadah_id
|
||||
JOIN penduduk_miskin pm ON pm.id = lb.penduduk_miskin_id
|
||||
ORDER BY lb.tanggal_bantuan DESC
|
||||
LIMIT 200";
|
||||
$rows = $db->query($sql)->fetch_all(MYSQLI_ASSOC);
|
||||
sendSuccess($rows);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'POST':
|
||||
$body = getBody();
|
||||
foreach (['penduduk_miskin_id','rumah_ibadah_id','tipe_bantuan','tanggal_bantuan'] as $f) {
|
||||
if (empty($body[$f])) sendError("Field '$f' wajib diisi");
|
||||
}
|
||||
$nilai = isset($body['nilai_bantuan']) && $body['nilai_bantuan'] !== ''
|
||||
? (float)$body['nilai_bantuan'] : null;
|
||||
|
||||
$stmt = $db->prepare(
|
||||
"INSERT INTO log_bantuan
|
||||
(penduduk_miskin_id, rumah_ibadah_id, tipe_bantuan,
|
||||
sub_kategori, keterangan, tanggal_bantuan, nilai_bantuan)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)"
|
||||
);
|
||||
$stmt->bind_param(
|
||||
'iissssd',
|
||||
$body['penduduk_miskin_id'],
|
||||
$body['rumah_ibadah_id'],
|
||||
$body['tipe_bantuan'],
|
||||
$body['sub_kategori'],
|
||||
$body['keterangan'],
|
||||
$body['tanggal_bantuan'],
|
||||
$nilai
|
||||
);
|
||||
executeOrFail($stmt, 'Gagal mencatat log bantuan');
|
||||
sendSuccess(['id' => $db->insert_id], 'Log bantuan berhasil dicatat', 201);
|
||||
break;
|
||||
|
||||
case 'DELETE':
|
||||
if ($id <= 0) sendError('ID wajib disertakan');
|
||||
$stmt = $db->prepare("DELETE FROM log_bantuan WHERE id=?");
|
||||
$stmt->bind_param('i', $id);
|
||||
executeOrFail($stmt, 'Gagal menghapus log bantuan');
|
||||
$stmt->affected_rows > 0
|
||||
? sendSuccess(null, 'Log bantuan berhasil dihapus')
|
||||
: sendError('Data tidak ditemukan', 404);
|
||||
break;
|
||||
|
||||
default:
|
||||
sendError('Method tidak diizinkan', 405);
|
||||
}
|
||||
Reference in New Issue
Block a user