36 lines
1.9 KiB
PHP
36 lines
1.9 KiB
PHP
<?php
|
|
require_once __DIR__ . '/auth.php';
|
|
require_login(true);
|
|
require_post();
|
|
|
|
$id = (int) post('id', 0);
|
|
$alasan = clean_text(post('alasan_hapus', post('alasan', '')), 1000);
|
|
$penerima = get_penerima_by_id($id);
|
|
if (!$penerima) json_response('err', 'Data penerima tidak ditemukan.', [], 404);
|
|
|
|
// Super admin boleh langsung menghapus marker/pin penerima dari peta.
|
|
// Data tidak dihapus permanen agar riwayat penyaluran tetap aman untuk audit.
|
|
if ($_SESSION['role'] === 'super_admin') {
|
|
$statusBaru = 'dibatalkan';
|
|
$hapus = 'disetujui';
|
|
$statusLama = $penerima['status_pengajuan'];
|
|
$catatan = $alasan ?: 'Marker penerima dihapus oleh super admin.';
|
|
$stmt = $koneksi->prepare("UPDATE penerima_bantuan SET status_pengajuan=?, status_hapus=?, alasan_hapus=?, alasan_status=? WHERE id=?");
|
|
$stmt->bind_param('ssssi', $statusBaru, $hapus, $catatan, $catatan, $id);
|
|
if (!$stmt->execute()) json_response('err', 'Gagal menghapus marker penerima: ' . $koneksi->error);
|
|
insert_riwayat_status($id, $statusLama, 'hapus_disetujui', $catatan);
|
|
json_response('ok', 'Marker penerima berhasil dihapus oleh super admin.', get_penerima_by_id($id));
|
|
}
|
|
|
|
// Admin rumah ibadah dan penerima hanya mengajukan penghapusan, menunggu persetujuan super admin.
|
|
if (!can_manage_penerima($penerima)) json_response('err', 'Akses ditolak.', [], 403);
|
|
if ($alasan === '') json_response('err', 'Alasan penghapusan wajib diisi.');
|
|
|
|
$statusHapus = 'menunggu';
|
|
$stmt = $koneksi->prepare("UPDATE penerima_bantuan SET status_hapus=?, alasan_hapus=? WHERE id=?");
|
|
$stmt->bind_param('ssi', $statusHapus, $alasan, $id);
|
|
if (!$stmt->execute()) json_response('err', 'Gagal mengajukan penghapusan marker penerima: ' . $koneksi->error);
|
|
insert_riwayat_status($id, $penerima['status_pengajuan'], 'hapus_menunggu', $alasan);
|
|
json_response('ok', 'Pengajuan hapus marker penerima dikirim. Menunggu persetujuan super admin.', get_penerima_by_id($id));
|
|
?>
|