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); }