<?php
session_start();
require_once('../config/db.php');

// --- نظام جلب اللغة ---
$current_lang = $_SESSION['lang'] ?? 'ar';
$lang_file = "../languages/" . $current_lang . ".php";
$translations = file_exists($lang_file) ? include($lang_file) : [];

// ✅ التحقق من تسجيل الدخول وصلاحية المدير
if (!isset($_SESSION['user']) || $_SESSION['user']['role'] !== 'admin') {
    header('Location: ../dashboard.php');
    exit;
}

// 1. جلب البيانات الحالية للمستخدم المطلوب تعديله
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id <= 0) {
    die($translations['invalid_user_id'] ?? 'معرف المستخدم غير صالح.');
}

$stmt_initial = $conn->prepare("SELECT full_name, username, role, protected FROM users WHERE id = :id");
$stmt_initial->execute(['id' => $id]);
$user_data_to_edit = $stmt_initial->fetch(PDO::FETCH_ASSOC);

if (!$user_data_to_edit) {
    die($translations['user_not_found'] ?? 'المستخدم غير موجود.');
}

$current_full_name = $user_data_to_edit['full_name'];
$current_username = $user_data_to_edit['username'];
$current_role = $user_data_to_edit['role']; 
$is_protected = (int)$user_data_to_edit['protected'];

// --- جلب بيانات المدرس إذا كان الدور الحالي teacher ---
$teacher_info = ['phone' => '', 'specialization' => ''];
if ($current_role === 'teacher') {
    $stmt_teacher = $conn->prepare("SELECT phone, specialization FROM teachers WHERE name = :name LIMIT 1");
    $stmt_teacher->execute(['name' => $current_full_name]);
    $teacher_data = $stmt_teacher->fetch(PDO::FETCH_ASSOC);
    if ($teacher_data) {
        $teacher_info = $teacher_data;
    }
}

$message = '';
$error = '';

// 2. معالجة طلب POST (التحديث)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $full_name = trim($_POST['full_name'] ?? '');
    $username = trim($_POST['username'] ?? '');
    $role = trim($_POST['role'] ?? ''); 
    $new_password = trim($_POST['password'] ?? '');
    
    $phone = trim($_POST['phone'] ?? '');
    $specialization = trim($_POST['specialization'] ?? '');

    if ($is_protected === 1 && $current_role === 'admin' && $role !== 'admin') {
        $error = $translations['error_protected_admin'] ?? "🚫 هذا المستخدم محمي. لا يمكن تخفيض صلاحيته من مدير.";
    }

    if ($full_name === '' || $username === '' || $role === '') {
        $error = $translations['error_fields_required'] ?? "🚫 جميع الحقول الأساسية مطلوبة.";
    } 
    
    if (!$error) { 
        try {
            $conn->beginTransaction();

            $stmt_check = $conn->prepare("SELECT id FROM users WHERE username = ? AND id != ?");
            $stmt_check->execute([$username, $id]);
            
            if ($stmt_check->fetch()) {
                $error = $translations['error_username_exists'] ?? "🚫 اسم المستخدم موجود مسبقاً لمستخدم آخر.";
                $conn->rollBack();
            } else {
                $query = "UPDATE users SET full_name = :full_name, username = :username, role = :role";
                $params = ['full_name' => $full_name, 'username' => $username, 'role' => $role, 'id' => $id];

                if ($new_password !== '') {
                    $query .= ", password = :password";
                    $params['password'] = password_hash($new_password, PASSWORD_DEFAULT);
                }
                $query .= " WHERE id = :id";
                
                $stmt_update = $conn->prepare($query);
                $stmt_update->execute($params);

                if ($role === 'teacher') {
                    $stmt_up_t = $conn->prepare("UPDATE teachers SET name = ?, phone = ?, specialization = ? WHERE name = ?");
                    $stmt_up_t->execute([$full_name, $phone, $specialization, $current_full_name]);
                }

                $conn->commit();
                $message = $translations['update_success_msg'] ?? "✅ تم تحديث بيانات المستخدم بنجاح.";
                
                $current_full_name = $full_name;
                $current_username = $username;
                $current_role = $role;
                $teacher_info = ['phone' => $phone, 'specialization' => $specialization];
            }
        } catch (PDOException $e) {
            $conn->rollBack();
            $error = ($translations['error_db'] ?? "❌ خطأ في قاعدة البيانات: ") . $e->getMessage();
        }
    }
}

include('../includes/header.php');
include('../includes/navbar.php');

// إعدادات الاتجاه والمسافات بناءً على اللغة
$dir = ($current_lang == 'ar') ? 'rtl' : 'ltr';
$ml = ($current_lang == 'ar') ? 'ml-2' : 'mr-2';
$mr = ($current_lang == 'ar') ? 'mr-1' : 'ml-1';
?>

<div class="min-h-screen bg-gray-100 dark:bg-gray-900 pb-16 font-cairo" dir="<?= $dir ?>">
    <div class="max-w-3xl mx-auto py-10 px-4 sm:px-6 lg:px-8">
        
        <div class="bg-white dark:bg-gray-800 shadow-xl rounded-xl p-6 mb-8 border-b-4 border-indigo-500/10">
            <div class="flex items-center justify-between">
                <h2 class="text-3xl font-extrabold text-gray-800 dark:text-gray-100 border-b-4 border-indigo-400/50 pb-2 inline-block">
                    <i class="fas fa-user-edit text-indigo-500 <?= $ml ?>"></i> <?= $translations['edit_user_title'] ?? 'تعديل بيانات:' ?> <?= htmlspecialchars($current_username) ?>
                </h2>
                <a href="list.php" class="text-gray-400 hover:text-indigo-600 transition"><i class="fas fa-users-cog text-2xl"></i></a>
            </div>
        </div>

        <div class="bg-white dark:bg-gray-800 shadow-2xl rounded-2xl p-8">
            
            <?php if ($error): ?>
                <div class="bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-300 p-4 rounded-xl mb-6 border border-red-200">
                    <i class="fas fa-times-circle <?= $ml ?>"></i> <?= $error ?>
                </div>
            <?php elseif ($message): ?>
                <div class="bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-300 p-4 rounded-xl mb-6 border border-green-200">
                    <i class="fas fa-check-circle <?= $ml ?>"></i> <?= $message ?>
                </div>
            <?php endif; ?>

            <form method="POST" class="space-y-6">
                
                <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                    <div>
                        <label class="block mb-2 font-bold text-gray-700 dark:text-gray-300 <?= $mr ?> text-sm"><?= $translations['label_full_name'] ?? 'الاسم الكامل *' ?></label>
                        <input type="text" name="full_name" required value="<?= htmlspecialchars($current_full_name) ?>" 
                            class="w-full border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-4 focus:ring-indigo-500/30 outline-none transition">
                    </div>
                    <div>
                        <label class="block mb-2 font-bold text-gray-700 dark:text-gray-300 <?= $mr ?> text-sm"><?= $translations['label_username'] ?? 'اسم المستخدم *' ?></label>
                        <input type="text" name="username" required value="<?= htmlspecialchars($current_username) ?>" 
                            class="w-full border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-4 focus:ring-indigo-500/30 outline-none transition">
                    </div>
                </div>

                <div>
                    <label class="block mb-2 font-bold text-gray-700 dark:text-gray-300 <?= $mr ?> text-sm"><?= $translations['label_role'] ?? 'الصلاحية في النظام *' ?></label>
                    <?php $should_role_be_disabled = ($current_role === 'admin' && $is_protected === 1); ?>
                    <select name="role" id="role" required <?= $should_role_be_disabled ? 'disabled' : '' ?> 
                        class="w-full border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-4 focus:ring-indigo-500/30 outline-none transition <?= $should_role_be_disabled ? 'opacity-60 cursor-not-allowed' : '' ?>">
                        <option value="staff" <?= $current_role === 'staff' ? 'selected' : '' ?>><?= $translations['role_staff'] ?? 'مستخدم (Staff)' ?></option>
                        <option value="admin" <?= $current_role === 'admin' ? 'selected' : '' ?>><?= $translations['role_admin'] ?? 'مدير (Admin)' ?></option>
                        <option value="teacher" <?= $current_role === 'teacher' ? 'selected' : '' ?>><?= $translations['role_teacher'] ?? 'مدرس (Teacher)' ?></option>
                    </select>
                    <?php if ($should_role_be_disabled): ?>
                        <p class="text-[10px] text-red-500 mt-1 <?= $mr ?> italic">* <?= $translations['protected_admin_notice'] ?? 'لا يمكن تغيير صلاحية المدير الأساسي (المحمي).' ?></p>
                        <input type="hidden" name="role" value="<?= htmlspecialchars($current_role) ?>">
                    <?php endif; ?>
                </div>

                <?php if ($current_role === 'teacher'): ?>
                <div class="bg-indigo-50 dark:bg-indigo-900/20 p-6 rounded-2xl border border-indigo-100 dark:border-indigo-800 space-y-4">
                    <h4 class="text-sm font-bold text-indigo-600 dark:text-indigo-400 uppercase tracking-widest flex items-center">
                        <i class="fas fa-id-card-alt <?= $ml ?>"></i> <?= $translations['teacher_additional_info'] ?? 'بيانات المدرس الإضافية' ?>
                    </h4>
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
                        <input type="text" name="phone" value="<?= htmlspecialchars($teacher_info['phone']) ?>" placeholder="<?= $translations['label_phone'] ?? 'رقم الهاتف' ?>" 
                            class="w-full border border-indigo-200 dark:border-gray-600 bg-white dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-2 focus:ring-indigo-400 outline-none transition">
                        <input type="text" name="specialization" value="<?= htmlspecialchars($teacher_info['specialization']) ?>" placeholder="<?= $translations['placeholder_specialization'] ?? 'التخصص' ?>" 
                            class="w-full border border-indigo-200 dark:border-gray-600 bg-white dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-2 focus:ring-indigo-400 outline-none transition">
                    </div>
                </div>
                <?php endif; ?>

                <div class="bg-gray-50 dark:bg-gray-700/50 p-6 rounded-2xl border border-dashed border-gray-300 dark:border-gray-600">
                    <label class="block mb-2 font-bold text-gray-700 dark:text-gray-300 <?= $mr ?> text-sm"><?= $translations['label_change_password'] ?? 'تغيير كلمة المرور' ?></label>
                    <input type="password" name="password" placeholder="<?= $translations['placeholder_password_leave_blank'] ?? 'اتركها فارغة لعدم التغيير' ?>" 
                        class="w-full border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700 dark:text-white rounded-xl px-4 py-3 focus:ring-4 focus:ring-indigo-500/30 outline-none transition">
                </div>

                <div class="flex flex-col sm:flex-row gap-4 pt-4">
                    <button type="submit" class="flex-1 bg-indigo-600 text-white font-bold py-4 rounded-xl hover:bg-indigo-700 transition shadow-lg transform hover:scale-[1.01]">
                        <i class="fas fa-check-double <?= $ml ?>"></i> <?= $translations['btn_save_changes'] ?? 'حفظ التغييرات الحالية' ?>
                    </button>
                    <a href="list.php" class="px-8 py-4 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-200 rounded-xl font-bold hover:bg-gray-300 dark:hover:bg-gray-600 transition text-center">
                        <?= $translations['btn_back_to_list'] ?? 'عودة للقائمة' ?>
                    </a>
                </div>
            </form>
        </div>
    </div>
</div>

<?php include('../includes/footer.php'); ?>