50 lines
2.5 KiB
PHP
50 lines
2.5 KiB
PHP
<?php
|
|
require_once __DIR__ . '/auth.php';
|
|
require_login(true);
|
|
require_post();
|
|
require_role(['super_admin','admin_rumah_ibadah'], true);
|
|
|
|
$allowedAgama = ['islam','kristen','katolik','hindu','buddha','konghucu'];
|
|
$nama = clean_text(post('nama_rumah_ibadah'), 150);
|
|
$agama = post('agama');
|
|
$alamat = clean_text(post('alamat'), 1000);
|
|
$nomor_hp = clean_text(post('nomor_hp'), 20);
|
|
$username_admin = clean_text(post('username_admin'), 50);
|
|
$lat = post('latitude');
|
|
$lng = post('longitude');
|
|
|
|
if ($nama==='' || $alamat==='' || $nomor_hp==='' || !valid_latlng($lat, $lng)) json_response('err', 'Data rumah ibadah belum lengkap atau koordinat tidak valid.');
|
|
if (!valid_enum($agama, $allowedAgama)) json_response('err', 'Agama tidak valid.');
|
|
|
|
if ($_SESSION['role'] === 'admin_rumah_ibadah') {
|
|
$user_id = (int) $_SESSION['user_id'];
|
|
$status = 'menunggu';
|
|
$ket = 'Menunggu persetujuan super admin.';
|
|
} else {
|
|
// Super admin wajib mengaitkan titik rumah ibadah ke username admin rumah ibadah.
|
|
if ($username_admin === '') json_response('err', 'Username admin rumah ibadah wajib diisi agar titik rumah ibadah punya pengelola.', [], 422);
|
|
$akunAdmin = get_user_by_username_role($username_admin, 'admin_rumah_ibadah');
|
|
if (!$akunAdmin) json_response('err', 'Username admin rumah ibadah tidak ditemukan, bukan role admin_rumah_ibadah, atau akun tidak aktif.', [], 404);
|
|
$user_id = (int) $akunAdmin['id'];
|
|
$status = 'diterima';
|
|
$ket = 'Ditambahkan langsung oleh super admin.';
|
|
}
|
|
|
|
$stmt = $koneksi->prepare("INSERT INTO rumah_ibadah (user_id, nama_rumah_ibadah, agama, alamat, nomor_hp, latitude, longitude, status_pengajuan, keterangan) VALUES (?,?,?,?,?,?,?,?,?)");
|
|
$stmt->bind_param('issssddss', $user_id, $nama, $agama, $alamat, $nomor_hp, $lat, $lng, $status, $ket);
|
|
if (!$stmt->execute()) json_response('err', 'Gagal mengajukan rumah ibadah: ' . $koneksi->error);
|
|
$id = $stmt->insert_id;
|
|
|
|
$jumlahSinkron = 0;
|
|
if ($status === 'diterima') {
|
|
// Jika rumah ibadah langsung diterima, penerima lama yang berada dalam radius otomatis ditautkan.
|
|
$jumlahSinkron = sync_penerima_area_by_rumah_ibadah($id);
|
|
}
|
|
|
|
$stmt = $koneksi->prepare("SELECT ri.*, u.nama AS nama_admin, u.username AS username_admin FROM rumah_ibadah ri LEFT JOIN users u ON u.id=ri.user_id WHERE ri.id=?");
|
|
$stmt->bind_param('i', $id);
|
|
$row = fetch_all_stmt($stmt)[0] ?? null;
|
|
if ($row) $row['jumlah_penerima_tersinkron'] = $jumlahSinkron;
|
|
json_response('ok', 'Rumah ibadah berhasil diajukan.' . ($jumlahSinkron ? " $jumlahSinkron penerima lama otomatis masuk area tanggung jawab." : ''), $row);
|
|
?>
|