49 lines
2.8 KiB
PHP
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]);
|
|
?>
|