<?php
// لا حاجة لـ session_start() هنا لأن dashboard.php يقوم باستدعائه

// التحقق من تسجيل الدخول
if (!isset($_SESSION['user_id'])) {
    header("Location: index.php");
    exit();
}

require_once 'db_connect.php';

// دالة للتحقق من صلاحية الوصول إلى الصفحة
function checkPermission($conn, $screen) {
    $user_id = $_SESSION['user_id'];

    // التحقق من دور المستخدم
    try {
        $stmt = $conn->prepare("SELECT role FROM users WHERE id = :user_id");
        $stmt->execute([':user_id' => $user_id]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);

        // إذا كان المستخدم مديرًا (admin)، يُسمح له بالوصول مباشرة
        if ($user && $user['role'] === 'admin') {
            return true; // السماح بالوصول دون التحقق من جدول permissions
        }
    } catch (PDOException $e) {
        error_log("Error checking user role: " . $e->getMessage());
        $_SESSION['error_message'] = "حدث خطأ أثناء التحقق من دور المستخدم.";
        header("Location: index.php");
        exit();
    }

    // إذا لم يكن المستخدم مديرًا، تحقق من الصلاحيات في جدول permissions
    try {
        $stmt = $conn->prepare("SELECT access FROM permissions WHERE user_id = :user_id AND screen = :screen");
        $stmt->execute([':user_id' => $user_id, ':screen' => $screen]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);

        // إذا لم يكن هناك سجل أو access = 0، يتم رفض الوصول
        if (!$result || $result['access'] != 1) {
            $_SESSION['error_message'] = "لا يوجد صلاحية للوصول إلى هذه الصفحة.";
            header("Location: index.php"); // إعادة توجيه إلى index.php بدلاً من dashboard.php
            exit();
        }
    } catch (PDOException $e) {
        error_log("Error checking permissions: " . $e->getMessage());
        $_SESSION['error_message'] = "حدث خطأ أثناء التحقق من الصلاحيات.";
        header("Location: index.php");
        exit();
    }
}

// جلب اسم المستخدم الحالي (لاستخدامه في الصفحات)
$user_id = $_SESSION['user_id'];
$user_name = $_SESSION['user_name'] ?? '';
if (empty($user_name)) {
    try {
        $stmt = $conn->prepare("SELECT username FROM users WHERE id = :user_id");
        $stmt->execute([':user_id' => $user_id]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
        if (!empty($user) && isset($user['username'])) {
            $user_name = $user['username'];
            $_SESSION['user_name'] = $user_name;
        }
    } catch (PDOException $e) {
        error_log("Error fetching user name: " . $e->getMessage());
        $user_name = 'مستخدم غير محدد';
    }
}
?>