<?php
require_once '../config.php';

// التحقق من تسجيل الدخول
requireLogin();

// التحقق من الصلاحيات
requirePermission('admin');

// التحقق من وجود معرف المستخدم
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    redirect(SITE_URL . '/settings/users.php');
}

$user_id = (int)$_GET['id'];

// الحصول على بيانات المستخدم
$db = getDbConnection();
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$user_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

// إذا لم يتم العثور على المستخدم
if (!$user) {
    setFlashMessage('error', 'لم يتم العثور على المستخدم المطلوب');
    redirect(SITE_URL . '/settings/users.php');
}

// معالجة النموذج
$errors = [];
$success = false;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // التحقق من البيانات
    $username = trim($_POST['username'] ?? '');
    $password = trim($_POST['password'] ?? '');
    $confirm_password = trim($_POST['confirm_password'] ?? '');
    $full_name = trim($_POST['full_name'] ?? '');
    $email = trim($_POST['email'] ?? '');
    $role = trim($_POST['role'] ?? '');
    
    // التحقق من اسم المستخدم
    if (empty($username)) {
        $errors[] = 'يرجى إدخال اسم المستخدم';
    } else {
        // التحقق من عدم وجود اسم مستخدم مكرر (باستثناء المستخدم الحالي)
        $stmt = $db->prepare("SELECT id FROM users WHERE username = ? AND id != ?");
        $stmt->execute([$username, $user_id]);
        if ($stmt->fetch()) {
            $errors[] = 'اسم المستخدم موجود بالفعل، يرجى اختيار اسم آخر';
        }
    }
    
    // التحقق من كلمة المرور (إذا تم تقديمها)
    if (!empty($password)) {
        if (strlen($password) < 6) {
            $errors[] = 'يجب أن تكون كلمة المرور 6 أحرف على الأقل';
        } elseif ($password !== $confirm_password) {
            $errors[] = 'كلمات المرور غير متطابقة';
        }
    }
    
    // التحقق من الاسم الكامل
    if (empty($full_name)) {
        $errors[] = 'يرجى إدخال الاسم الكامل';
    }
    
    // التحقق من البريد الإلكتروني
    if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = 'يرجى إدخال بريد إلكتروني صحيح';
    }
    
    // التحقق من الدور
    if (empty($role) || !in_array($role, ['admin', 'manager', 'user'])) {
        $errors[] = 'يرجى اختيار دور صحيح';
    }
    
    // منع تغيير دور المستخدم الحالي
    if ($_SESSION['user_id'] == $user_id && $role != $user['role']) {
        $errors[] = 'لا يمكنك تغيير دورك الخاص';
    }
    
    // إذا لم تكن هناك أخطاء، قم بتحديث المستخدم
    if (empty($errors)) {
        try {
            // إعداد الاستعلام
            if (!empty($password)) {
                // تحديث مع كلمة المرور
                $stmt = $db->prepare("
                    UPDATE users 
                    SET username = ?, password = ?, full_name = ?, email = ?, role = ?
                    WHERE id = ?
                ");
                
                // تشفير كلمة المرور
                $hashed_password = password_hash($password, PASSWORD_DEFAULT);
                
                $stmt->execute([$username, $hashed_password, $full_name, $email, $role, $user_id]);
            } else {
                // تحديث بدون كلمة المرور
                $stmt = $db->prepare("
                    UPDATE users 
                    SET username = ?, full_name = ?, email = ?, role = ?
                    WHERE id = ?
                ");
                
                $stmt->execute([$username, $full_name, $email, $role, $user_id]);
            }
            
            $success = true;
            
            // تحديث بيانات المستخدم للعرض
            $user['username'] = $username;
            $user['full_name'] = $full_name;
            $user['email'] = $email;
            $user['role'] = $role;
            
        } catch (PDOException $e) {
            $errors[] = 'حدث خطأ أثناء تحديث المستخدم: ' . $e->getMessage();
        }
    }
}

// عنوان الصفحة
$pageTitle = 'تعديل المستخدم: ' . $user['username'];

// تضمين ملف الهيدر
include '../includes/header.php';
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <h1 class="h3 mb-0"><i class="fas fa-user-edit me-2"></i> تعديل المستخدم: <?php echo htmlspecialchars($user['username']); ?></h1>
    <a href="<?php echo SITE_URL; ?>/settings/users.php" class="btn btn-secondary">
        <i class="fas fa-arrow-right"></i> العودة إلى قائمة المستخدمين
    </a>
</div>

<div class="card">
    <div class="card-body">
        <?php if ($success): ?>
            <div class="alert alert-success">
                <i class="fas fa-check-circle me-2"></i> تم تحديث المستخدم بنجاح.
            </div>
        <?php endif; ?>
        
        <?php if (!empty($errors)): ?>
            <div class="alert alert-danger">
                <ul class="mb-0">
                    <?php foreach ($errors as $error): ?>
                        <li><?php echo $error; ?></li>
                    <?php endforeach; ?>
                </ul>
            </div>
        <?php endif; ?>
        
        <form method="post" action="">
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label for="username" class="form-label">اسم المستخدم <span class="text-danger">*</span></label>
                    <input type="text" class="form-control" id="username" name="username" value="<?php echo htmlspecialchars($user['username']); ?>" required>
                    <div class="form-text">سيستخدم هذا الاسم لتسجيل الدخول</div>
                </div>
                
                <div class="col-md-6 mb-3">
                    <label for="full_name" class="form-label">الاسم الكامل <span class="text-danger">*</span></label>
                    <input type="text" class="form-control" id="full_name" name="full_name" value="<?php echo htmlspecialchars($user['full_name']); ?>" required>
                </div>
            </div>
            
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label for="password" class="form-label">كلمة المرور</label>
                    <input type="password" class="form-control" id="password" name="password">
                    <div class="form-text">اتركها فارغة إذا لم ترغب في تغيير كلمة المرور</div>
                </div>
                
                <div class="col-md-6 mb-3">
                    <label for="confirm_password" class="form-label">تأكيد كلمة المرور</label>
                    <input type="password" class="form-control" id="confirm_password" name="confirm_password">
                </div>
            </div>
            
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label for="email" class="form-label">البريد الإلكتروني</label>
                    <input type="email" class="form-control" id="email" name="email" value="<?php echo htmlspecialchars($user['email'] ?? ''); ?>">
                </div>
                
                <div class="col-md-6 mb-3">
                    <label for="role" class="form-label">الدور <span class="text-danger">*</span></label>
                    <select class="form-select" id="role" name="role" required <?php echo $_SESSION['user_id'] == $user_id ? 'disabled' : ''; ?>>
                        <option value="">اختر الدور</option>
                        <option value="admin" <?php echo $user['role'] === 'admin' ? 'selected' : ''; ?>>مدير</option>
                        <option value="manager" <?php echo $user['role'] === 'manager' ? 'selected' : ''; ?>>مشرف</option>
                        <option value="user" <?php echo $user['role'] === 'user' ? 'selected' : ''; ?>>مستخدم</option>
                    </select>
                    <?php if ($_SESSION['user_id'] == $user_id): ?>
                        <input type="hidden" name="role" value="<?php echo $user['role']; ?>">
                        <div class="form-text text-warning">لا يمكنك تغيير دورك الخاص</div>
                    <?php else: ?>
                        <div class="form-text">
                            <strong>مدير:</strong> جميع الصلاحيات
                            <br>
                            <strong>مشرف:</strong> إدارة المنخرطين والاشتراكات
                            <br>
                            <strong>مستخدم:</strong> عرض البيانات فقط
                        </div>
                    <?php endif; ?>
                </div>
            </div>
            
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label class="form-label">تاريخ الإنشاء</label>
                    <input type="text" class="form-control" value="<?php echo formatDate($user['created_at']); ?>" readonly>
                </div>
                
                <div class="col-md-6 mb-3">
                    <label class="form-label">آخر تسجيل دخول</label>
                    <input type="text" class="form-control" value="<?php echo $user['last_login'] ? formatDate($user['last_login']) : 'لم يسجل الدخول بعد'; ?>" readonly>
                </div>
            </div>
            
            <div class="mt-4">
                <button type="submit" class="btn btn-primary">
                    <i class="fas fa-save me-2"></i> حفظ التغييرات
                </button>
                <a href="<?php echo SITE_URL; ?>/settings/users.php" class="btn btn-secondary">
                    <i class="fas fa-times me-2"></i> إلغاء
                </a>
            </div>
        </form>
    </div>
</div>

<?php
// تضمين ملف الفوتر
include '../includes/footer.php';
?>
