Files
D1041231091-WebGIS-All/05/tambah_program_bantuan.php
T

49 lines
2.8 KiB
PHP

<?php
require_once __DIR__ . '/auth.php';
require_login(true);
require_post();
require_role(['super_admin','admin_rumah_ibadah'], true);
$allowedJenis = ['zakat','sembako','uang_tunai','lainnya'];
$nama = clean_text(post('nama_program'), 150);
$jenis = post('jenis_bantuan');
$deskripsi = clean_text(post('deskripsi'), 1500);
$bulan = (int) post('bulan');
$tahun = (int) post('tahun');
$target = (int) post('target_frekuensi', 1);
$nominalInput = post('nominal', '');
$nominal = ($nominalInput === '') ? null : (int) $nominalInput;
$jumlah_item = clean_text(post('jumlah_item', ''), 100);
$rumah_ibadah_id = post('rumah_ibadah_id', '');
if ($nama==='' || !valid_enum($jenis, $allowedJenis)) json_response('err', 'Nama program atau jenis bantuan tidak valid.');
if ($bulan < 1 || $bulan > 12 || $tahun < 2000 || $target < 1) json_response('err', 'Bulan, tahun, atau target frekuensi tidak valid.');
if ($nominal !== null && $nominal < 0) json_response('err', 'Nominal tidak boleh minus.');
if ($_SESSION['role'] === 'admin_rumah_ibadah') {
$ids = get_admin_rumah_ibadah_ids((int)$_SESSION['user_id'], true);
if (empty($ids)) json_response('err', 'Admin belum memiliki rumah ibadah diterima.');
if ($rumah_ibadah_id === '') {
if (count($ids) > 1) json_response('err', 'Pilih rumah ibadah terlebih dahulu karena akun ini mengelola lebih dari satu rumah ibadah.', [], 422);
$rumah_ibadah_id = $ids[0];
} else {
$rumah_ibadah_id = (int)$rumah_ibadah_id;
if (!in_array($rumah_ibadah_id, $ids, true)) json_response('err', 'Rumah ibadah tidak termasuk milik admin ini.', [], 403);
}
} else {
$rumah_ibadah_id = ($rumah_ibadah_id === '') ? null : (int) $rumah_ibadah_id;
if (!$rumah_ibadah_id) json_response('err', 'Rumah ibadah wajib dipilih.');
}
// FIX: pisahkan cabang INSERT agar nominal NULL tersimpan sebagai NULL, bukan 0.
if ($nominal !== null) {
$stmt = $koneksi->prepare("INSERT INTO program_bantuan (rumah_ibadah_id, nama_program, jenis_bantuan, deskripsi, bulan, tahun, target_frekuensi, nominal, jumlah_item) VALUES (?,?,?,?,?,?,?,?,?)");
$stmt->bind_param('isssiiiis', $rumah_ibadah_id, $nama, $jenis, $deskripsi, $bulan, $tahun, $target, $nominal, $jumlah_item);
} else {
$stmt = $koneksi->prepare("INSERT INTO program_bantuan (rumah_ibadah_id, nama_program, jenis_bantuan, deskripsi, bulan, tahun, target_frekuensi, nominal, jumlah_item) VALUES (?,?,?,?,?,?,?,NULL,?)");
$stmt->bind_param('isssiiis', $rumah_ibadah_id, $nama, $jenis, $deskripsi, $bulan, $tahun, $target, $jumlah_item);
}
if (!$stmt->execute()) json_response('err', 'Gagal membuat program bantuan: ' . $koneksi->error);
json_response('ok', 'Program bantuan berhasil dibuat. Jenis, nominal, dan jumlah item akan menjadi acuan mutlak saat penyaluran.', ['id' => $stmt->insert_id]);
?>