<?php
// admin/permissions.php - مدیریت دسترسی‌ها (جدول ماتریسی)

session_start();
require_once '../config/database.php';
require_once '../includes/db.php';
require_once '../includes/auth.php';
require_once '../includes/functions.php';

if (!isLoggedIn() || $_SESSION['role_level'] != 1) {
    header('Location: dashboard.php');
    exit;
}

$pageTitle = 'مدیریت دسترسی‌ها';
$pageSubtitle = 'مدیریت دسترسی‌های هر نقش به صورت ماتریسی';

// ===== دریافت همه نقش‌ها =====
$roles = getAllRoles();

// ===== تعریف همه دسترسی‌های ممکن =====
$allPermissions = [
    'view_dashboard' => 'مشاهده داشبورد',
    'view_teachers' => 'مشاهده مدرسین',
    'add_teacher' => 'افزودن مدرس',
    'edit_teacher' => 'ویرایش مدرس',
    'delete_teacher' => 'حذف مدرس',
    'view_courses' => 'مشاهده دروس',
    'add_course' => 'افزودن درس',
    'edit_course' => 'ویرایش درس',
    'delete_course' => 'حذف درس',
    'view_sessions' => 'مشاهده جلسات',
    'edit_sessions' => 'ثبت و ویرایش جلسات',
    'view_transactions' => 'مشاهده تراکنش‌ها',
    'add_transaction' => 'افزودن تراکنش',
    'edit_transaction' => 'ویرایش تراکنش',
    'delete_transaction' => 'حذف تراکنش',
    'view_reports' => 'مشاهده گزارش‌ها',
    'export_excel' => 'خروجی اکسل',
    'export_pdf' => 'خروجی PDF',
    'manage_roles' => 'مدیریت نقش‌ها',
    'manage_permissions' => 'مدیریت دسترسی‌ها',
    'manage_settings' => 'مدیریت تنظیمات',
    'manage_salary' => 'مدیریت حق التدریس',
    'manage_terms' => 'مدیریت ترم‌ها',
    'manage_tickets' => 'مدیریت تیکت‌ها',
    'manage_users' => 'مدیریت کاربران',
    'import_excel' => 'آپلود اکسل',
];

// ===== گروه‌بندی دسترسی‌ها =====
$permissionGroups = [
    'داشبورد' => ['view_dashboard'],
    'مدیریت مدرسین' => ['view_teachers', 'add_teacher', 'edit_teacher', 'delete_teacher'],
    'مدیریت دروس' => ['view_courses', 'add_course', 'edit_course', 'delete_course'],
    'مدیریت جلسات' => ['view_sessions', 'edit_sessions'],
    'مدیریت تراکنش‌ها' => ['view_transactions', 'add_transaction', 'edit_transaction', 'delete_transaction'],
    'گزارش‌ها و خروجی‌ها' => ['view_reports', 'export_excel', 'export_pdf'],
    'مدیریت سیستم' => ['manage_roles', 'manage_permissions', 'manage_settings', 'manage_salary', 'manage_terms', 'manage_users'],
    'ارتباطات' => ['manage_tickets'],
    'ابزارها' => ['import_excel'],
];

$message = '';
$messageType = '';

// ===== پردازش فرم =====
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $permissionsData = isset($_POST['permissions']) ? $_POST['permissions'] : [];
    $successCount = 0;
    
    // ===== برای هر نقش که چک‌باکس ارسال شده =====
    foreach ($permissionsData as $roleId => $perms) {
        $roleId = (int)$roleId;
        if ($roleId > 0 && $roleId != 1) { // غیرفعال کردن برای مدیر سامانه
            // ===== حذف دسترسی‌های قبلی =====
            deleteData('permissions', 'role_id = :role_id', ['role_id' => $roleId]);
            
            // ===== ثبت دسترسی‌های جدید =====
            foreach ($perms as $perm) {
                insertData('permissions', [
                    'role_id' => $roleId,
                    'permission_name' => $perm,
                    'is_allowed' => 1
                ]);
            }
            $successCount++;
        }
    }
    
    if ($successCount > 0) {
        $message = '✅ دسترسی‌ها با موفقیت به‌روزرسانی شد.';
        $messageType = 'success';
    } else {
        $message = '⚠️ هیچ تغییری اعمال نشد.';
        $messageType = 'warning';
    }
    
    // ===== به‌روزرسانی لیست دسترسی‌ها =====
    $rolePermissions = [];
    foreach ($roles as $role) {
        $perms = getRolePermissions($role['id']);
        $rolePermissions[$role['id']] = array_column($perms, 'permission_name');
    }
} else {
    // ===== دریافت دسترسی‌های هر نقش =====
    $rolePermissions = [];
    foreach ($roles as $role) {
        $perms = getRolePermissions($role['id']);
        $rolePermissions[$role['id']] = array_column($perms, 'permission_name');
    }
}

$content = 'permissions-content.php';
require_once '../includes/layout.php';
?>