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

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

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

// التحقق من وجود معرف المستخدم
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    setAlert('danger', 'معرف المستخدم غير صالح');
    header('Location: ' . SITE_URL . '/settings/users.php');
    exit;
}

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

// لا يمكن للمستخدم حذف نفسه
if ($_SESSION['user_id'] == $user_id) {
    setAlert('danger', 'لا يمكنك حذف حسابك الخاص');
    header('Location: ' . SITE_URL . '/settings/users.php');
    exit;
}

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

// إذا لم يتم العثور على المستخدم
if (!$user) {
    setAlert('danger', 'لم يتم العثور على المستخدم المطلوب');
    header('Location: ' . SITE_URL . '/settings/users.php');
    exit;
}

// معالجة عملية الحذف
try {
    // بدء المعاملة
    $db->beginTransaction();
    
    // تحديث السجلات التي تحتوي على مراجع للمستخدم (إذا كان ذلك ضروريًا)
    // على سبيل المثال: تعيين قيمة NULL للحقول التي تشير إلى هذا المستخدم في الجداول الأخرى
    // $stmt = $db->prepare("UPDATE some_table SET created_by = NULL WHERE created_by = ?");
    // $stmt->execute([$user_id]);
    
    // حذف المستخدم
    $stmt = $db->prepare("DELETE FROM users WHERE id = ?");
    $stmt->execute([$user_id]);
    
    // تأكيد المعاملة
    $db->commit();
    
    setAlert('success', 'تم حذف المستخدم "' . htmlspecialchars($user['username']) . '" بنجاح');
} catch (PDOException $e) {
    // التراجع عن المعاملة في حالة حدوث خطأ
    $db->rollBack();
    setAlert('danger', 'حدث خطأ أثناء حذف المستخدم: ' . $e->getMessage());
}

// إعادة التوجيه إلى صفحة المستخدمين
header('Location: ' . SITE_URL . '/settings/users.php');
exit;
?>
