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]); ?>