Files
D1041231091-WebGIS-All/05/ajukan_rumah_ibadah.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);
?>