<?php
defined('BASEPATH') OR exit('No direct script access allowed');

// --- LOGIKA DETEKSI ADMIN YANG LEBIH KUAT ---
$is_admin = false;

// Cara 1: Cek via CI Instance (Standar)
if (function_exists('get_instance')) {
    $CI =& get_instance();
    if (isset($CI->session)) {
        // Cek apakah session library sudah dimuat dan punya data role
        if ($CI->session->userdata('role_name') == 'administrator') {
            $is_admin = true;
        }
    }
}

// Cara 2: Fallback via Native PHP Session (Jika CI Session gagal/mati)
// CodeIgniter menyimpan session di cookie atau database. 
// Jika driver session adalah 'database' dan DB error, session CI mati.
// Kita coba cek cookie session CI secara manual jika cara 1 gagal.
if (!$is_admin && isset($_COOKIE['ci_session_azlaundry_surya'])) {
    // Karena session disimpan di DB (berdasarkan config Anda), dan DB sedang error,
    // maka kita tidak bisa membaca isi session dari cookie ID saja tanpa query DB.
    // SOLUSI ALTERNATIF UNTUK DEBUGGING:
    // Kita izinkan akses detail error jika IP Address adalah IP Anda (Opsional, tapi aman untuk dev)
    // ATAU kita paksa tampilkan detail jika ENVIRONMENT bukan production (tapi Anda set production).
    
    // SOLUSI TERBAIK UNTUK KASUS INI:
    // Karena ini error DB, dan session ada di DB, kita tidak bisa baca session.
    // Satu-satunya cara Admin melihat error DB spesifik ini adalah dengan mengecek IP Address
    // atau kita buat tombol "Lihat Detail" yang aman.
    
    // Namun, untuk kemudahan debugging Anda sekarang, mari kita gunakan pengecekan IP Address sederhana.
    // Ganti '127.0.0.1' dengan IP Address komputer Anda saat ini jika ingin spesifik.
    // Atau biarkan logika di bawah ini yang memeriksa apakah request berasal dari browser yang sudah login sebelumnya via cookie lain?
    
    // Mari kita coba cara yang lebih sederhana: Cek apakah ada cookie login lain yang biasa Anda pakai?
    // Tidak ada cara 100% akurat membaca role tanpa DB jika session driver = database.
    
    // TAPI, ada trik: CodeIgniter 3 menyimpan data session di dalam blob database.
    // Jika DB error total, session hilang.
    
    // SOLUSI PRAKTIS:
    // Kita akan menampilkan detail error HANYA JIKA tidak ada header HTTP yang dikirim (CLI) 
    // ATAU kita tambahkan parameter GET rahasia untuk debugging.
    // Contoh: .../test_error/database?debug=1
    
    if (isset($_GET['debug']) && $_GET['debug'] == 'admin_secret_key') {
        $is_admin = true;
    }
}

// Jika masih belum admin, coba cek lagi via CI session (barangkali tadi cuma warning kecil)
if (!$is_admin && function_exists('get_instance')) {
    $CI =& get_instance();
    if (isset($CI->session) && $CI->session->userdata('role_name') == 'administrator') {
        $is_admin = true;
    }
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Database Error</title>
<style type="text/css">
::selection { background-color: #E13300; color: white; }
body { background-color: #fff; margin: 40px; font: 13px/20px normal Helvetica, Arial, sans-serif; color: #4F5155; }
h1 { color: #444; border-bottom: 1px solid #D0D0D0; font-size: 19px; padding: 14px 15px; }
code { font-family: Consolas, monospace; font-size: 12px; background-color: #f9f9f9; border: 1px solid #D0D0D0; color: #002166; display: block; margin: 14px 0; padding: 12px; white-space: pre-wrap; }
#container { margin: 10px; border: 1px solid #D0D0D0; box-shadow: 0 0 8px #D0D0D0; padding: 20px; }
.admin-badge { background: #d9534f; color: white; padding: 5px 10px; font-size: 10px; border-radius: 3px; float: right; }

/* Style Kiosk Mode */
.kiosk-container { text-align: center; background: #fff; padding: 40px; border-radius: 10px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); max-width: 500px; width: 90%; margin: 50px auto; font-family: sans-serif; }
.kiosk-title { color: #d9534f; font-size: 24px; margin-bottom: 20px; }
.kiosk-msg { font-size: 16px; line-height: 1.5; color: #555; margin-bottom: 30px; }
.kiosk-btn { display: inline-block; padding: 10px 25px; background-color: #337ab7; color: #fff; text-decoration: none; border-radius: 5px; font-weight: bold; }
</style>
</head>
<body>

<?php if ($is_admin): ?>
    <!-- TAMPILAN ADMIN -->
    <div id="container">
        <span class="admin-badge">ADMIN DEBUG MODE</span>
        <h1><?php echo isset($heading) ? $heading : 'A Database Error Occurred'; ?></h1>
        <?php echo isset($message) ? $message : 'Unable to connect to the database or invalid query.'; ?>
    </div>
<?php else: ?>
    <!-- TAMPILAN USER (KIOSK) -->
    <div class="kiosk-container">
        <h1 class="kiosk-title">Oops! Terjadi Kesalahan</h1>
        <p class="kiosk-msg">Ada permasalahan pada halaman yang Anda tuju (Database), mohon segera hubungi admin.</p>
        <a href="<?php echo base_url(); ?>" class="kiosk-btn">Kembali ke Beranda</a>
        
        <!-- Tombol Rahasia untuk Admin Debugging (Opsional) -->
        <!-- Jika Anda admin dan melihat ini, tambahkan ?debug=admin_secret_key di URL untuk lihat detail -->
        <?php if (isset($_GET['debug']) && $_GET['debug'] == 'admin_secret_key'): ?>
             <div style="margin-top:20px; text-align:left; border-top:1px solid #ccc; padding-top:10px;">
                <strong>Debug Info:</strong><br>
                <?php echo isset($message) ? $message : ''; ?>
             </div>
        <?php endif; ?>
    </div>
<?php endif; ?>

</body>
</html>