<?php
/**
 * user_mgmt.php - handles user management with role-based permissions
 * Only Admins can create or edit users.
 */

// সেশন স্টার্ট না করা থাকলে স্টার্ট করুন
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

/** * ডাটাবেস কানেকশন চেক
 */
if (!isset($conn)) {
    include('db_config.php');
}

/** * সেশন থেকে রোল চেক করা। 
 * নিশ্চিত করুন লগইন করার সময় $_SESSION['role'] বা $_SESSION['user_role'] সেট করা হয়েছে।
 */
$current_user_role = isset($_SESSION['role']) ? $_SESSION['role'] : (isset($_SESSION['user_role']) ? $_SESSION['user_role'] : "Staff"); 

$status_msg = "";

// চেক করা হচ্ছে ইউজার এডমিন কিনা (Admin অথবা Super Admin)
$is_admin = (strtolower($current_user_role) === 'admin' || strtolower($current_user_role) === 'super admin');

// ইউজার ডিলিট লজিক (শুধুমাত্র এডমিনদের জন্য)
if ($is_admin && isset($_GET['delete_user'])) {
    $d_id = mysqli_real_escape_string($conn, $_GET['delete_user']);
    
    // নিজের আইডি নিজে ডিলিট করা বন্ধ করার জন্য সুরক্ষা (ঐচ্ছিক)
    $delete_sql = "DELETE FROM users WHERE id='$d_id'";
    if (mysqli_query($conn, $delete_sql)) {
        // ডিলিট সফল হলে সেশন মেসেজ সেট করে রিডাইরেক্ট করা ভালো যাতে পেজ রিফ্রেশে বারবার ডিলিট না হয়
        $_SESSION['status_success'] = "ইউজার সফলভাবে ডিলিট করা হয়েছে!";
        echo "<script>window.location.href='admin.php?view=users';</script>";
        exit;
    }
}

// সেশন থেকে মেসেজ প্রদর্শন
if (isset($_SESSION['status_success'])) {
    $status_msg = "<div class='alert-success'>" . $_SESSION['status_success'] . "</div>";
    unset($_SESSION['status_success']);
}

// ইউজার আপডেট লজিক (শুধুমাত্র এডমিনদের জন্য)
if ($is_admin && $_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['update_user'])) {
    $u_id = mysqli_real_escape_string($conn, $_POST['user_id']);
    $full_name = mysqli_real_escape_string($conn, $_POST['full_name']);
    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $phone = mysqli_real_escape_string($conn, $_POST['phone']);
    $role = mysqli_real_escape_string($conn, $_POST['role']);
    $status = mysqli_real_escape_string($conn, $_POST['status']);
    
    $password_update = "";
    if (!empty($_POST['new_password'])) {
        $new_pass = password_hash($_POST['new_password'], PASSWORD_DEFAULT);
        $password_update = ", password='$new_pass'";
    }

    $update_sql = "UPDATE users SET 
                    full_name='$full_name', 
                    username='$username', 
                    email='$email', 
                    phone='$phone', 
                    role='$role', 
                    status='$status' 
                    $password_update 
                    WHERE id='$u_id'";
    
    if (mysqli_query($conn, $update_sql)) {
        $status_msg = "<div class='alert-success'>ইউজারের তথ্য সফলভাবে আপডেট করা হয়েছে!</div>";
    }
}

// নতুন ইউজার তৈরির লজিক (শুধুমাত্র এডমিনদের জন্য)
if ($is_admin && $_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['create_user'])) {
    $full_name = mysqli_real_escape_string($conn, $_POST['full_name']);
    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $phone = mysqli_real_escape_string($conn, $_POST['phone']);
    $role = mysqli_real_escape_string($conn, $_POST['role']); 

    $sql = "INSERT INTO users (full_name, username, email, password, phone, role, status) 
            VALUES ('$full_name', '$username', '$email', '$password', '$phone', '$role', 'Active')";
    
    if (mysqli_query($conn, $sql)) {
        $status_msg = "<div class='alert-success'>নতুন ইউজার সফলভাবে তৈরি হয়েছে!</div>";
    }
}
?>

<style>
    :root {
        --primary-color: #2c3e50;
        --accent-color: #3498db;
        --success-color: #27ae60;
        --danger-color: #e74c3c;
        --warning-color: #f39c12;
    }
    .alert-success { background:#d4edda; color:#155724; padding:15px; border-radius:8px; margin-bottom:20px; border-left: 5px solid var(--success-color); }
    .alert-info { background:#d1ecf1; color:#0c5460; padding:15px; border-radius:8px; margin-bottom:20px; border-left: 5px solid var(--accent-color); }
    .section-card { background: white; padding: 25px; border-radius: 12px; box-shadow: 0 5px 15px rgba(0,0,0,0.05); margin-bottom: 30px; }
    .pass-container { position: relative; width: 100%; }
    .pass-toggle { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); cursor: pointer; color: #888; z-index: 5; }
    .edit-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 1000; align-items: center; justify-content: center; padding: 20px; }
    .modal-content { background: #fff; width: 100%; max-width: 600px; padding: 30px; border-radius: 15px; box-shadow: 0 15px 40px rgba(0,0,0,0.4); overflow-y: auto; max-height: 90vh; }
    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    .form-group { margin-bottom: 15px; display: flex; flex-direction: column; }
    .form-group.full-width { grid-column: span 2; }
    label { font-weight: 600; margin-bottom: 5px; color: #444; font-size: 14px; }
    input, select { padding: 12px; border: 1px solid #ccc; border-radius: 8px; font-size: 14px; outline: none; transition: 0.3s; }
    input:focus, select:focus { border-color: var(--accent-color); }
    .btn-save { background: var(--success-color); color: white; padding: 12px 25px; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; }
    .btn-cancel { background: var(--danger-color); color: white; padding: 12px 25px; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; }
    .badge { padding: 4px 10px; border-radius: 20px; font-size: 12px; font-weight: bold; text-transform: uppercase; }
    .badge-admin { background: #fee2e2; color: #dc2626; }
    .badge-staff { background: #e0f2fe; color: #0284c7; }
</style>

<!-- নতুন ইউজার তৈরির ফর্ম -->
<?php if ($is_admin): ?>
<div class="section-card">
    <h3 style="margin:0 0 20px 0; color:var(--primary-color);"><i class="fas fa-user-plus"></i> নতুন ইউজার তৈরি করুন</h3>
    <?php echo $status_msg; ?>
    
    <form method="POST" class="form-grid">
        <div class="form-group"><label>পুরো নাম</label><input type="text" name="full_name" placeholder="যেমন: রহিম শেখ" required></div>
        <div class="form-group"><label>ইউজারনেম</label><input type="text" name="username" placeholder="ইউনিক ইউজারনেম" required></div>
        <div class="form-group"><label>ইমেইল</label><input type="email" name="email" placeholder="example@mail.com" required></div>
        <div class="form-group"><label>ফোন</label><input type="text" name="phone" placeholder="017XXXXXXXX" required></div>
        <div class="form-group">
            <label>পাসওয়ার্ড</label>
            <div class="pass-container">
                <input type="password" name="password" id="regPassword" required>
                <i class="fas fa-eye pass-toggle" onclick="togglePassword('regPassword', this)"></i>
            </div>
        </div>
        <div class="form-group">
            <label>রোল</label>
            <select name="role" required>
                <option value="Staff">Staff</option>
                <option value="Admin">Admin</option>
            </select>
        </div>
        <button type="submit" name="create_user" class="btn-save full-width">ইউজার যোগ করুন</button>
    </form>
</div>
<?php else: ?>
<div class="alert-info">
    <i class="fas fa-info-circle"></i> আপনি বর্তমানে <strong><?php echo $current_user_role; ?></strong> হিসেবে লগইন আছেন। আপনার নতুন ইউজার তৈরি বা তথ্য এডিট করার অনুমতি নেই।
</div>
<?php endif; ?>

<!-- ইউজার লিস্ট -->
<div class="section-card">
    <h3 style="margin-top:0;"><i class="fas fa-users"></i> সিস্টেম ইউজার লিস্ট</h3>
    <div style="overflow-x: auto;">
        <table style="width:100%; border-collapse: collapse; min-width: 700px;">
            <thead>
                <tr style="background: #f8fafc; text-align: left;">
                    <th style="padding:15px; border-bottom: 2px solid #e2e8f0;">ইউজার</th>
                    <th style="padding:15px; border-bottom: 2px solid #e2e8f0;">যোগাযোগ</th>
                    <th style="padding:15px; border-bottom: 2px solid #e2e8f0;">রোল</th>
                    <th style="padding:15px; border-bottom: 2px solid #e2e8f0;">স্ট্যাটাস</th>
                    <?php if ($is_admin): ?>
                    <th style="padding:15px; border-bottom: 2px solid #e2e8f0; text-align: center;">অ্যাকশন</th>
                    <?php endif; ?>
                </tr>
            </thead>
            <tbody>
                <?php
                $users_list = mysqli_query($conn, "SELECT * FROM users ORDER BY id DESC");
                while($row = mysqli_fetch_assoc($users_list)): ?>
                <tr style="border-bottom: 1px solid #f1f5f9;">
                    <td style="padding:15px;">
                        <strong><?php echo htmlspecialchars($row['full_name']); ?></strong><br>
                        <small style="color:#64748b;">@<?php echo htmlspecialchars($row['username']); ?></small>
                    </td>
                    <td style="padding:15px;">
                        <i class="far fa-envelope" style="width: 15px;"></i> <?php echo htmlspecialchars($row['email']); ?><br>
                        <i class="fas fa-phone-alt" style="width: 15px;"></i> <?php echo htmlspecialchars($row['phone']); ?>
                    </td>
                    <td style="padding:15px;">
                        <span class="badge <?php echo (strtolower($row['role']) == 'admin') ? 'badge-admin' : 'badge-staff'; ?>">
                            <?php echo $row['role']; ?>
                        </span>
                    </td>
                    <td style="padding:15px;">
                        <span style="color: <?php echo $row['status'] == 'Active' ? '#10b981' : '#f59e0b'; ?>; font-weight: bold;">
                            ● <?php echo $row['status']; ?>
                        </span>
                    </td>
                    <?php if ($is_admin): ?>
                    <td style="padding:15px; text-align: center;">
                        <div style="display: flex; gap: 5px; justify-content: center;">
                            <button onclick='openEditModal(<?php echo json_encode($row); ?>)' style="background:var(--warning-color); color:white; border:none; padding:8px 12px; border-radius:6px; cursor:pointer;">
                                <i class="fas fa-edit"></i>
                            </button>
                            <a href="user_mgmt.php?delete_user=<?php echo $row['id']; ?>" onclick="return confirm('আপনি কি নিশ্চিতভাবে এই ইউজারকে ডিলিট করতে চান?')" style="background:var(--danger-color); color:white; border:none; padding:8px 12px; border-radius:6px; cursor:pointer; text-decoration: none;">
                                <i class="fas fa-trash"></i>
                            </a>
                        </div>
                    </td>
                    <?php endif; ?>
                </tr>
                <?php endwhile; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- এডিট মোডাল -->
<?php if ($is_admin): ?>
<div id="editUserModal" class="edit-modal">
    <div class="modal-content">
        <h3 style="margin-top:0; color:var(--primary-color); border-bottom: 2px solid #eee; padding-bottom: 10px;">
            <i class="fas fa-user-cog"></i> ইউজার প্রোফাইল এডিট
        </h3>
        <form method="POST" class="form-grid">
            <input type="hidden" name="user_id" id="edit_id">
            <div class="form-group full-width"><label>পুরো নাম</label><input type="text" name="full_name" id="edit_name" required></div>
            <div class="form-group"><label>ইউজারনেম</label><input type="text" name="username" id="edit_username" required></div>
            <div class="form-group"><label>ইমেইল</label><input type="email" name="email" id="edit_email" required></div>
            <div class="form-group"><label>ফোন নম্বর</label><input type="text" name="phone" id="edit_phone" required></div>
            <div class="form-group">
                <label>রোল</label>
                <select name="role" id="edit_role">
                    <option value="Staff">Staff</option>
                    <option value="Admin">Admin</option>
                </select>
            </div>
            <div class="form-group">
                <label>স্ট্যাটাস</label>
                <select name="status" id="edit_status">
                    <option value="Active">Active</option>
                    <option value="Inactive">Inactive</option>
                </select>
            </div>
            <div class="form-group full-width">
                <label>পাসওয়ার্ড (পরিবর্তন না করলে ফাঁকা রাখুন)</label>
                <div class="pass-container">
                    <input type="password" name="new_password" id="edit_password">
                    <i class="fas fa-eye pass-toggle" onclick="togglePassword('edit_password', this)"></i>
                </div>
            </div>
            <div class="full-width" style="display:flex; gap:10px; margin-top:15px;">
                <button type="submit" name="update_user" class="btn-save" style="flex: 2;">সেভ করুন</button>
                <button type="button" onclick="closeEditModal()" class="btn-cancel" style="flex: 1;">বাতিল</button>
            </div>
        </form>
    </div>
</div>
<?php endif; ?>

<script>
function togglePassword(inputId, icon) {
    const passInput = document.getElementById(inputId);
    if (passInput.type === "password") {
        passInput.type = "text";
        icon.classList.replace("fa-eye", "fa-eye-slash");
    } else {
        passInput.type = "password";
        icon.classList.replace("fa-eye-slash", "fa-eye");
    }
}

<?php if ($is_admin): ?>
function openEditModal(user) {
    document.getElementById('edit_id').value = user.id;
    document.getElementById('edit_name').value = user.full_name;
    document.getElementById('edit_username').value = user.username;
    document.getElementById('edit_email').value = user.email;
    document.getElementById('edit_phone').value = user.phone;
    document.getElementById('edit_role').value = user.role;
    document.getElementById('edit_status').value = user.status;
    document.getElementById('edit_password').value = "";
    document.getElementById('editUserModal').style.display = 'flex';
}

function closeEditModal() {
    document.getElementById('editUserModal').style.display = 'none';
}

window.onclick = function(event) {
    if (event.target == document.getElementById('editUserModal')) {
        closeEditModal();
    }
}
<?php endif; ?>
</script>