Deploy WebGIS 01-05 dengan Docker
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
<?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);
|
||||
?>
|
||||
Reference in New Issue
Block a user