<?php
$pageTitle = 'إدارة الأدوار والصلاحيات';
include '../../includes/header.php';

// التحقق من تسجيل الدخول والصلاحية
checkLogin();
if (!hasPermission('view_roles')) { // تأكد من أن هذه الصلاحية صحيحة
    $_SESSION['error_message'] = 'ليس لديك صلاحية لعرض هذه الصفحة';
    header('Location: ../../index.php');
    exit();
}

// معالجة الحذف
if (isset($_GET['delete']) && hasPermission('delete_roles')) {
    $roleId = (int)$_GET['delete'];
    
    $db = getDB();
    
    // التحقق من عدم وجود مستخدمين مرتبطين بهذا الدور
    // ملاحظة: إذا كان لديك جدول user_roles، تأكد من أن هذا الاستعلام صحيح
    $usersCount = $db->selectOne(
        "SELECT COUNT(*) as count FROM user_roles WHERE role_id = ?",
        [$roleId]
    );
    
    if ($usersCount['count'] > 0) {
        $_SESSION['error_message'] = 'لا يمكن حذف هذا الدور لأنه مرتبط بمستخدمين.';
    } else {
        try {
            $db->beginTransaction();
            
            // حذف صلاحيات الدور من جدول role_permissions
            $db->delete("DELETE FROM role_permissions WHERE role_id = ?", [$roleId]);
            
            // حذف الدور نفسه من جدول roles
            $result = $db->delete("DELETE FROM roles WHERE id = ?", [$roleId]);
            
            $db->commit();
            
            if ($result) {
                $_SESSION['success_message'] = 'تم حذف الدور بنجاح.';
            } else {
                $_SESSION['error_message'] = 'حدث خطأ في حذف الدور.';
            }
        } catch (Exception $e) {
            $db->rollback();
            $_SESSION['error_message'] = 'حدث خطأ في قاعدة البيانات أثناء حذف الدور: ' . $e->getMessage();
            error_log("Error deleting role: " . $e->getMessage()); // تسجيل الخطأ
        }
    }
    
    header('Location: index.php');
    exit();
}

// الحصول على قائمة الأدوار مع عدد المستخدمين والصلاحيات
$db = getDB();
$roles = $db->select(
    "SELECT r.*, 
            COUNT(DISTINCT ur.user_id) as users_count,
            COUNT(DISTINCT rp.permission_id) as permissions_count
     FROM roles r
     LEFT JOIN user_roles ur ON r.id = ur.role_id
     LEFT JOIN role_permissions rp ON r.id = rp.role_id
     GROUP BY r.id
     ORDER BY r.role_name"
);

// الحصول على إحصائيات الصلاحيات الإجمالية
$totalPermissions = $db->selectOne("SELECT COUNT(*) as count FROM permissions")['count'];

// الحصول على جميع الصلاحيات وتجميعها حسب الموديل للعرض التفصيلي
$all_permissions_raw = $db->select("SELECT * FROM permissions ORDER BY module ASC, permission_name ASC");
$permissions_by_module_detailed = [];
foreach ($all_permissions_raw as $perm) {
    $permissions_by_module_detailed[$perm['module']][] = $perm;
}

// الحصول على إحصائيات الصلاحيات حسب الوحدة (للكارد العلوي)
$permissionsStats = $db->select(
    "SELECT module, COUNT(*) as count 
     FROM permissions 
     GROUP BY module 
     ORDER BY module"
);

?>

<div class="content-area">
    <div class="page-header">
        <div class="d-flex justify-content-between align-items-center">
            <div>
                <h2 class="page-title">إدارة الأدوار والصلاحيات</h2>
                <p class="page-subtitle">إدارة أدوار المستخدمين وصلاحياتهم في النظام</p>
            </div>
            <div class="d-flex gap-2">
                <?php if (hasPermission('create_roles')): ?>
                <a href="create.php" class="btn btn-primary">
                    <i class="fas fa-plus me-2"></i>إضافة دور جديد
                </a>
                <?php endif; ?>
                <?php if (hasPermission('manage_permissions')): ?>
                <a href="manage_permissions.php" class="btn btn-outline-info">
                    <i class="fas fa-key me-2"></i>إدارة الصلاحيات
                </a>
                <?php endif; ?>
            </div>
        </div>
    </div>

    <!-- رسائل التنبيه -->
    <?php if (isset($_SESSION['success_message'])): ?>
        <div class="alert alert-success alert-dismissible fade show" role="alert">
            <?php echo htmlspecialchars($_SESSION['success_message']); unset($_SESSION['success_message']); ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    <?php endif; ?>
    <?php if (isset($_SESSION['error_message'])): ?>
        <div class="alert alert-danger alert-dismissible fade show" role="alert">
            <?php echo htmlspecialchars($_SESSION['error_message']); unset($_SESSION['error_message']); ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    <?php endif; ?>

    <!-- إحصائيات سريعة -->
    <div class="row mb-4">
        <div class="col-lg-3 col-md-6 mb-3">
            <div class="card">
                <div class="card-body">
                    <div class="d-flex align-items-center">
                        <div class="flex-shrink-0">
                            <i class="fas fa-user-shield fa-2x text-primary"></i>
                        </div>
                        <div class="flex-grow-1 ms-3">
                            <h5 class="card-title mb-1">الأدوار</h5>
                            <h3 class="text-primary mb-0"><?php echo count($roles); ?></h3>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-lg-3 col-md-6 mb-3">
            <div class="card">
                <div class="card-body">
                    <div class="d-flex align-items-center">
                        <div class="flex-shrink-0">
                            <i class="fas fa-key fa-2x text-success"></i>
                        </div>
                        <div class="flex-grow-1 ms-3">
                            <h5 class="card-title mb-1">الصلاحيات الكلية</h5>
                            <h3 class="text-success mb-0"><?php echo $totalPermissions; ?></h3>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-lg-3 col-md-6 mb-3">
            <div class="card">
                <div class="card-body">
                    <div class="d-flex align-items-center">
                        <div class="flex-shrink-0">
                            <i class="fas fa-users fa-2x text-warning"></i>
                        </div>
                        <div class="flex-grow-1 ms-3">
                            <h5 class="card-title mb-1">المستخدمين النشطين</h5>
                            <?php
                            $activeUsers = $db->selectOne("SELECT COUNT(*) as count FROM users WHERE is_active = 1");
                            ?>
                            <h3 class="text-warning mb-0"><?php echo $activeUsers['count']; ?></h3>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="col-lg-3 col-md-6 mb-3">
            <div class="card">
                <div class="card-body">
                    <div class="d-flex align-items-center">
                        <div class="flex-shrink-0">
                            <i class="fas fa-layer-group fa-2x text-info"></i>
                        </div>
                        <div class="flex-grow-1 ms-3">
                            <h5 class="card-title mb-1">عدد الوحدات</h5>
                            <h3 class="text-info mb-0"><?php echo count($permissionsStats); ?></h3>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="row">
        <!-- قائمة الأدوار -->
        <div class="col-lg-8">
            <div class="card">
                <div class="card-header">
                    <h5 class="card-title mb-0">قائمة الأدوار</h5>
                </div>
                <div class="card-body p-0">
                    <?php if (empty($roles)): ?>
                        <div class="text-center py-5">
                            <i class="fas fa-user-shield fa-3x text-muted mb-3"></i>
                            <h5 class="text-muted">لا توجد أدوار معرفة حاليًا.</h5>
                            <?php if (hasPermission('create_roles')): ?>
                            <a href="create.php" class="btn btn-primary mt-2">
                                <i class="fas fa-plus me-2"></i>إضافة أول دور
                            </a>
                            <?php endif; ?>
                        </div>
                    <?php else: ?>
                        <div class="table-responsive">
                            <table class="table table-hover mb-0">
                                <thead class="table-light">
                                    <tr>
                                        <th>اسم الدور</th>
                                        <th>الوصف</th>
                                        <th>المستخدمين</th>
                                        <th>الصلاحيات</th>
                                        <th>تاريخ الإنشاء</th>
                                        <th>الإجراءات</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($roles as $role): ?>
                                    <tr>
                                        <td>
                                            <div class="fw-bold text-primary">
                                                <?php echo htmlspecialchars($role['role_name']); ?>
                                            </div>
                                        </td>
                                        <td>
                                            <small class="text-muted">
                                                <?php echo htmlspecialchars($role['description'] ?: 'لا يوجد وصف'); ?>
                                            </small>
                                        </td>
                                        <td>
                                            <span class="badge bg-info">
                                                <?php echo $role['users_count']; ?> مستخدم
                                            </span>
                                        </td>
                                        <td>
                                            <span class="badge bg-success">
                                                <?php echo $role['permissions_count']; ?> صلاحية
                                            </span>
                                        </td>
                                        <td>
                                            <small><?php echo date('Y-m-d', strtotime($role['created_at'])); ?></small>
                                        </td>
                                        <td>
                                            <div class="btn-group btn-group-sm">
                                                <?php if (hasPermission('manage_permissions')): ?>
                                                <a href="edit.php?id=<?php echo $role['id']; ?>" 
                                                   class="btn btn-outline-primary" title="تعديل صلاحيات الدور">
                                                    <i class="fas fa-key"></i>
                                                </a>
                                                <?php endif; ?>
                                                
                                                <?php if (hasPermission('edit_roles')): ?>
                                                <a href="edit.php?id=<?php echo $role['id']; ?>" 
                                                   class="btn btn-outline-warning" title="تعديل معلومات الدور">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <?php endif; ?>
                                                
                                                <?php if (hasPermission('delete_roles')): ?>
                                                <a href="?delete=<?php echo $role['id']; ?>" 
                                                   class="btn btn-outline-danger" title="حذف الدور"
                                                   onclick="return confirm('هل أنت متأكد من حذف هذا الدور؟ سيتم حذف جميع الصلاحيات المرتبطة به. لن تتمكن من حذف الدور إذا كان مرتبطًا بمستخدمين.')">
                                                    <i class="fas fa-trash"></i>
                                                </a>
                                                <?php endif; ?>
                                            </div>
                                        </td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        </div>

        <!-- عرض الصلاحيات حسب الوحدة (الموديل) -->
        <div class="col-lg-4">
            <div class="card">
                <div class="card-header">
                    <h5 class="card-title mb-0">الصلاحيات حسب الوحدة</h5>
                </div>
                <div class="card-body">
                    <?php if (empty($permissions_by_module_detailed)): ?>
                        <div class="text-center py-3">
                            <i class="fas fa-info-circle text-muted"></i>
                            <p class="text-muted mb-0">لا توجد صلاحيات معرفة بعد.</p>
                            <?php if (hasPermission('create_permissions')): ?>
                            <a href="permissions.php" class="btn btn-sm btn-outline-primary mt-2">
                                <i class="fas fa-plus me-1"></i>إضافة صلاحية
                            </a>
                            <?php endif; ?>
                        </div>
                    <?php else: ?>
                        <?php foreach ($permissions_by_module_detailed as $module_name => $permissions): ?>
                            <div class="card mb-3 border">
                                <div class="card-header bg-light py-2">
                                    <h6 class="mb-0">
                                        <i class="fas fa-cube me-1 text-info"></i>
                                        <?php echo htmlspecialchars(ucwords(str_replace('_', ' ', $module_name))); ?>
                                        <span class="badge bg-secondary ms-2"><?php echo count($permissions); ?></span>
                                    </h6>
                                </div>
                                <ul class="list-group list-group-flush">
                                    <?php foreach ($permissions as $permission): ?>
                                        <li class="list-group-item py-2">
                                            <div class="d-flex justify-content-between align-items-center">
                                                <div>
                                                    <div class="fw-bold" style="font-size: 0.9em;">
                                                        <?php echo htmlspecialchars($permission['description'] ?: $permission['permission_name']); ?>
                                                    </div>
                                                    <?php if ($permission['description'] && $permission['description'] !== $permission['permission_name']): ?>
                                                        <small class="text-muted" style="font-size: 0.75em;">(<?php echo htmlspecialchars($permission['permission_name']); ?>)</small>
                                                    <?php endif; ?>
                                                </div>
                                                <?php if (hasPermission('edit_permissions')): // رابط مباشر لتعديل الصلاحية من هنا ?>
                                                    <a href="edit_permission.php?id=<?php echo $permission['id']; ?>" class="btn btn-outline-secondary btn-sm" title="تعديل">
                                                        <i class="fas fa-pen"></i>
                                                    </a>
                                                <?php endif; ?>
                                            </div>
                                        </li>
                                    <?php endforeach; ?>
                                </ul>
                            </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>

            <!-- آخر الأنشطة -->
            <div class="card mt-4">
                <div class="card-header">
                    <h5 class="card-title mb-0">آخر الأنشطة</h5>
                </div>
                <div class="card-body">
                    <?php
                    // الحصول على آخر المستخدمين المضافين
                    $recentUsers = $db->select(
                        "SELECT u.full_name, u.created_at, GROUP_CONCAT(r.role_name) as roles
                         FROM users u
                         LEFT JOIN user_roles ur ON u.id = ur.user_id
                         LEFT JOIN roles r ON ur.role_id = r.id
                         GROUP BY u.id
                         ORDER BY u.created_at DESC
                         LIMIT 5"
                    );
                    ?>
                    
                    <?php if (empty($recentUsers)): ?>
                        <div class="text-center py-3">
                            <i class="fas fa-info-circle text-muted"></i>
                            <p class="text-muted mb-0">لا توجد أنشطة حديثة</p>
                        </div>
                    <?php else: ?>
                        <?php foreach ($recentUsers as $user): ?>
                        <div class="d-flex align-items-center mb-3">
                            <div class="flex-shrink-0">
                                <div class="user-avatar me-3" style="width: 32px; height: 32px; border-radius: 50%; background: #007bff; display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 12px;">
                                    <?php echo strtoupper(substr($user['full_name'], 0, 1)); ?>
                                </div>
                            </div>
                            <div class="flex-grow-1">
                                <div class="fw-bold" style="font-size: 14px;">
                                    <?php echo htmlspecialchars($user['full_name']); ?>
                                </div>
                                <small class="text-muted">
                                    <?php echo $user['roles'] ?: 'بدون دور'; ?>
                                </small>
                                <div>
                                    <small class="text-muted">
                                        <?php echo date('Y-m-d H:i', strtotime($user['created_at'])); ?>
                                    </small>
                                </div>
                            </div>
                        </div>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include '../../includes/footer.php'; ?>