Files
2026-06-13 08:08:49 +07:00

117 lines
5.1 KiB
PHP

<?php
error_reporting(0);
ini_set("display_errors", 0);
ob_start();
session_start();
include 'koneksi.php';
$aksi = $_REQUEST['aksi'] ?? 'list_bantuan';
if ($aksi === 'list_bantuan') {
$res=$conn->query("SELECT * FROM bantuan ORDER BY jenis,nama");
if(!$res) json_out(['error'=>$conn->error],500);
$rows=[]; while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
if ($aksi === 'simpan_master') {
$nm=$conn->real_escape_string($_POST['nama']??'');
$jn=$conn->real_escape_string($_POST['jenis']??'sembako');
$sm=$conn->real_escape_string($_POST['sumber']??'');
$bt=$conn->real_escape_string($_POST['bentuk']??'');
$conn->query("INSERT INTO bantuan (nama,jenis,sumber,bentuk) VALUES ('$nm','$jn','$sm','$bt')");
if($conn->error) json_out(['error'=>$conn->error],500);
json_out(['success'=>true,'id'=>$conn->insert_id]);
}
if ($aksi === 'edit_master') {
$id=(int)($_POST['id']??0);
$nm=$conn->real_escape_string($_POST['nama']??'');
$jn=$conn->real_escape_string($_POST['jenis']??'sembako');
$sm=$conn->real_escape_string($_POST['sumber']??'');
$bt=$conn->real_escape_string($_POST['bentuk']??'');
$conn->query("UPDATE bantuan SET nama='$nm',jenis='$jn',sumber='$sm',bentuk='$bt' WHERE id=$id");
json_out(['success'=>true]);
}
if ($aksi === 'hapus_master') {
$id=(int)($_POST['id']??0);
$conn->query("DELETE FROM histori_bantuan WHERE bantuan_id=$id");
$conn->query("DELETE FROM bantuan WHERE id=$id");
json_out(['success'=>true]);
}
if ($aksi === 'histori') {
$where=['1=1']; $params=[]; $types='';
if(!empty($_GET['penduduk_id'])){$where[]="hb.penduduk_id=?";$params[]=(int)$_GET['penduduk_id'];$types.='i';}
if(!empty($_GET['bantuan_id'])){$where[]="hb.bantuan_id=?";$params[]=(int)$_GET['bantuan_id'];$types.='i';}
if(!empty($_GET['status'])){$where[]="hb.status=?";$params[]=$_GET['status'];$types.='s';}
if(!empty($_GET['tgl_dari'])){$where[]="hb.tanggal>=?";$params[]=$_GET['tgl_dari'];$types.='s';}
if(!empty($_GET['tgl_sampai'])){$where[]="hb.tanggal<=?";$params[]=$_GET['tgl_sampai'];$types.='s';}
$w=implode(' AND ',$where);
$sql="SELECT hb.*,b.nama AS nama_bantuan,b.jenis,b.sumber,p.nama AS nama_penduduk,p.status_ekonomi,p.nik,u.nama AS nama_pengurus
FROM histori_bantuan hb
JOIN bantuan b ON hb.bantuan_id=b.id
JOIN penduduk p ON hb.penduduk_id=p.id
LEFT JOIN `user` u ON hb.disalurkan_oleh=u.id
WHERE $w ORDER BY hb.tanggal DESC,hb.id DESC";
if($params){$stmt=$conn->prepare($sql);$stmt->bind_param($types,...$params);$stmt->execute();$res=$stmt->get_result();$stmt->close();}
else $res=$conn->query($sql);
$rows=[]; while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
if ($aksi === 'salurkan') {
$pid=(int)($_POST['penduduk_id']??0);
$bid=(int)($_POST['bantuan_id']??0);
$tgl=$conn->real_escape_string($_POST['tanggal']??date('Y-m-d'));
$jml=$conn->real_escape_string($_POST['jumlah']??'');
$ket=$conn->real_escape_string($_POST['keterangan']??'');
$uid=!empty($_SESSION['user_id'])?(int)$_SESSION['user_id']:'NULL';
$conn->query("INSERT INTO histori_bantuan (penduduk_id,bantuan_id,tanggal,jumlah,status,disalurkan_oleh,keterangan) VALUES ($pid,$bid,'$tgl','$jml','disalurkan',$uid,'$ket')");
if($conn->error) json_out(['error'=>$conn->error],500);
$new_id=$conn->insert_id;
if($uid!=='NULL'){
log_aktivitas($conn,$uid,'CREATE','histori_bantuan',$new_id,'Salurkan bantuan ke penduduk id='.$pid);
}
json_out(['success'=>true,'id'=>$new_id]);
}
if ($aksi === 'edit_histori') {
$id=(int)($_POST['id']??0);
$status=$conn->real_escape_string($_POST['status']??'disalurkan');
$jml=$conn->real_escape_string($_POST['jumlah']??'');
$ket=$conn->real_escape_string($_POST['keterangan']??'');
$conn->query("UPDATE histori_bantuan SET status='$status',jumlah='$jml',keterangan='$ket' WHERE id=$id");
json_out(['success'=>true]);
}
if ($aksi === 'hapus_histori') {
$id=(int)($_POST['id']??0);
$conn->query("DELETE FROM histori_bantuan WHERE id=$id");
json_out(['success'=>true]);
}
if ($aksi === 'belum_dibantu') {
$sql="SELECT p.id,p.nik,p.nama,p.status_ekonomi,TIMESTAMPDIFF(YEAR,p.tanggal_lahir,CURDATE()) AS umur,ri.nama AS nama_ibadah,k.kelurahan
FROM penduduk p
LEFT JOIN rumah_ibadah ri ON p.rumah_ibadah_id=ri.id
LEFT JOIN keluarga k ON p.keluarga_id=k.id
WHERE p.status_hidup='hidup'
AND p.status_ekonomi IN ('miskin','rentan')
AND p.id NOT IN (SELECT DISTINCT penduduk_id FROM histori_bantuan WHERE status='disalurkan')
ORDER BY FIELD(p.status_ekonomi,'miskin','rentan'),p.nama";
$res=$conn->query($sql); $rows=[];
while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}
if ($aksi === 'statistik') {
$sql="SELECT b.id,b.nama,b.jenis,COUNT(hb.id) AS total_salur,SUM(hb.status='disalurkan') AS berhasil
FROM bantuan b
LEFT JOIN histori_bantuan hb ON hb.bantuan_id=b.id
GROUP BY b.id ORDER BY total_salur DESC";
$res=$conn->query($sql); $rows=[];
while($r=$res->fetch_assoc()) $rows[]=$r;
json_out($rows);
}