<?php
$pageTitle = 'إضافة دور جديد';
include '../../includes/header.php';

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

$errors = [];
$formData = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // التحقق من البيانات
    $formData = [
        'role_name' => trim($_POST['role_name'] ?? ''),
        'description' => trim($_POST['description'] ?? ''),
        'permissions' => $_POST['permissions'] ?? []
    ];
    
    // التحقق من الحقول المطلوبة
    if (empty($formData['role_name'])) {
        $errors['role_name'] = 'اسم الدور مطلوب';
    } elseif (strlen($formData['role_name']) < 2) {
        $errors['role_name'] = 'اسم الدور يجب أن يكون حرفين على الأقل';
    }
    
    // --- التعديل الجديد: التحقق من الصلاحيات ---
    if (empty($formData['permissions'])) {
        $errors['permissions'] = 'يجب تحديد صلاحية واحدة على الأقل لهذا الدور';
        $errors['general'] = 'فشل الحفظ: لم يتم تحديد أي صلاحيات.';
    }
    // ----------------------------------------
    
    // التحقق من عدم تكرار اسم الدور
    if (empty($errors['role_name'])) {
        $db = getDB();
        $existingRole = $db->selectOne(
            "SELECT id FROM roles WHERE role_name = ?",
            [$formData['role_name']]
        );
        if ($existingRole) {
            $errors['role_name'] = 'اسم الدور موجود بالفعل';
        }
    }
    
    // إذا لم توجد أخطاء، قم بإنشاء الدور
    if (empty($errors)) {
        $db = getDB();
        
        try {
            $db->beginTransaction();
            
            // إنشاء الدور
            $roleId = $db->insert(
                "INSERT INTO roles (role_name, description, created_at) VALUES (?, ?, NOW())",
                [$formData['role_name'], $formData['description']]
            );
            
            // تعيين الصلاحيات
            if (!empty($formData['permissions']) && hasPermission('manage_permissions')) {
                foreach ($formData['permissions'] as $permissionId) {
                    $db->insert(
                        "INSERT INTO role_permissions (role_id, permission_id) VALUES (?, ?)",
                        [$roleId, $permissionId]
                    );
                }
            }
            
            $db->commit();
            
            $_SESSION['success_message'] = 'تم إنشاء الدور بنجاح';
            header('Location: index.php');
            exit();
            
        } catch (Exception $e) {
            $db->rollback();
            $errors['general'] = 'حدث خطأ في إنشاء الدور';
        }
    }
}

// الحصول على قائمة الصلاحيات مجمعة حسب الوحدة
$db = getDB();
$permissions = [];
if (hasPermission('manage_permissions')) {
    $allPermissions = $db->select("SELECT * FROM permissions ORDER BY module, permission_name");
    
    foreach ($allPermissions as $permission) {
        $permissions[$permission['module']][] = $permission;
    }
}
?>

<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>
            <a href="index.php" class="btn btn-outline-secondary">
                <i class="fas fa-arrow-right me-2"></i>العودة إلى القائمة
            </a>
        </div>
    </div>

    <div class="row">
        <div class="col-lg-8">
            <div class="card">
                <div class="card-header">
                    <h5 class="card-title">معلومات الدور</h5>
                </div>
                <div class="card-body">
                    <?php if (isset($errors['general'])): ?>
                        <div class="alert alert-danger">
                            <?php echo htmlspecialchars($errors['general']); ?>
                        </div>
                    <?php endif; ?>
                    
                    <form method="POST" action="" id="roleForm">
                        <div class="form-group">
                            <label for="role_name" class="form-label">اسم الدور *</label>
                            <input type="text" class="form-control <?php echo isset($errors['role_name']) ? 'is-invalid' : ''; ?>" 
                                   id="role_name" name="role_name" 
                                   value="<?php echo htmlspecialchars($formData['role_name'] ?? ''); ?>" 
                                   placeholder="مثال: مدير المبيعات" required>
                            <?php if (isset($errors['role_name'])): ?>
                                <div class="invalid-feedback"><?php echo $errors['role_name']; ?></div>
                            <?php endif; ?>
                        </div>
                        
                        <div class="form-group">
                            <label for="description" class="form-label">الوصف</label>
                            <textarea class="form-control" id="description" name="description" rows="3"
                                      placeholder="وصف مختصر لمهام ومسؤوليات هذا الدور"><?php echo htmlspecialchars($formData['description'] ?? ''); ?></textarea>
                        </div>
                        
                        <?php if (!empty($permissions) && hasPermission('manage_permissions')): ?>
                        <div class="form-group">
                            <label class="form-label">الصلاحيات <span class="text-danger">*</span></label>
                            <?php if (isset($errors['permissions'])): ?>
                                <div class="text-danger small mb-2"><b>خطأ:</b> <?php echo $errors['permissions']; ?></div>
                            <?php endif; ?>
                            <div class="row">
                                <?php foreach ($permissions as $module => $modulePermissions): ?>
                                <div class="col-md-6 mb-4">
                                    <div class="card">
                                        <div class="card-header py-2">
                                            <div class="d-flex justify-content-between align-items-center">
                                                <h6 class="mb-0"><?php echo ucfirst($module); ?></h6>
                                                <div class="form-check">
                                                    <input class="form-check-input module-toggle" type="checkbox" 
                                                           id="module_<?php echo $module; ?>" 
                                                           data-module="<?php echo $module; ?>">
                                                    <label class="form-check-label" for="module_<?php echo $module; ?>">
                                                        <small>تحديد الكل</small>
                                                    </label>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="card-body py-2">
                                            <?php foreach ($modulePermissions as $permission): ?>
                                            <div class="form-check mb-2">
                                                <input class="form-check-input permission-checkbox" 
                                                       type="checkbox" 
                                                       id="permission_<?php echo $permission['id']; ?>" 
                                                       name="permissions[]" 
                                                       value="<?php echo $permission['id']; ?>"
                                                       data-module="<?php echo $module; ?>"
                                                       <?php echo in_array($permission['id'], $formData['permissions'] ?? []) ? 'checked' : ''; ?>>
                                                <label class="form-check-label" for="permission_<?php echo $permission['id']; ?>">
                                                    <small>
                                                        <?php echo htmlspecialchars($permission['permission_name']); ?>
                                                        <?php if ($permission['description']): ?>
                                                            <br><span class="text-muted"><?php echo htmlspecialchars($permission['description']); ?></span>
                                                        <?php endif; ?>
                                                    </small>
                                                </label>
                                            </div>
                                            <?php endforeach; ?>
                                        </div>
                                    </div>
                                </div>
                                <?php endforeach; ?>
                            </div>
                        </div>
                        <?php endif; ?>
                        
                        <div class="d-flex gap-2">
                            <button type="submit" class="btn btn-primary">
                                <i class="fas fa-save me-2"></i>حفظ الدور
                            </button>
                            <a href="index.php" class="btn btn-secondary">
                                <i class="fas fa-times me-2"></i>إلغاء
                            </a>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        
        <div class="col-lg-4">
            <div class="card">
                <div class="card-header">
                    <h5 class="card-title">إرشادات</h5>
                </div>
                <div class="card-body">
                    <ul class="list-unstyled">
                        <li class="mb-2"><i class="fas fa-info-circle text-info me-2"></i>يجب تحديد صلاحية واحدة على الأقل</li>
                        <li class="mb-2"><i class="fas fa-info-circle text-info me-2"></i>اختر اسماً واضحاً ومميزاً للدور</li>
                        <li class="mb-2"><i class="fas fa-info-circle text-info me-2"></i>الوصف يساعد في فهم مهام الدور</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// تحديد/إلغاء تحديد جميع صلاحيات الوحدة
document.querySelectorAll('.module-toggle').forEach(function(toggle) {
    toggle.addEventListener('change', function() {
        const module = this.dataset.module;
        const checkboxes = document.querySelectorAll(`input[data-module="${module}"].permission-checkbox`);
        
        checkboxes.forEach(function(checkbox) {
            checkbox.checked = toggle.checked;
        });
    });
});

// تحديث حالة "تحديد الكل" عند تغيير الصلاحيات الفردية
document.querySelectorAll('.permission-checkbox').forEach(function(checkbox) {
    checkbox.addEventListener('change', function() {
        const module = this.dataset.module;
        const moduleToggle = document.querySelector(`#module_${module}`);
        const moduleCheckboxes = document.querySelectorAll(`input[data-module="${module}"].permission-checkbox`);
        
        const checkedCount = Array.from(moduleCheckboxes).filter(cb => cb.checked).length;
        const totalCount = moduleCheckboxes.length;
        
        if (checkedCount === 0) {
            moduleToggle.checked = false;
            moduleToggle.indeterminate = false;
        } else if (checkedCount === totalCount) {
            moduleToggle.checked = true;
            moduleToggle.indeterminate = false;
        } else {
            moduleToggle.checked = false;
            moduleToggle.indeterminate = true;
        }
    });
});

// --- التعديل الجديد: التحقق من الاختيار قبل إرسال النموذج ---
document.getElementById('roleForm').addEventListener('submit', function(e) {
    const permissions = document.querySelectorAll('.permission-checkbox:checked');
    if (permissions.length === 0) {
        e.preventDefault(); // منع الإرسال
        alert('عذراً، يجب تحديد صلاحية واحدة على الأقل لهذا الدور.');
        return false;
    }
});
// --------------------------------------------------------

// تهيئة حالة "تحديد الكل" عند تحميل الصفحة
document.addEventListener('DOMContentLoaded', function() {
    document.querySelectorAll('.module-toggle').forEach(function(toggle) {
        const module = toggle.dataset.module;
        const moduleCheckboxes = document.querySelectorAll(`input[data-module="${module}"].permission-checkbox`);
        
        const checkedCount = Array.from(moduleCheckboxes).filter(cb => cb.checked).length;
        const totalCount = moduleCheckboxes.length;
        
        if (checkedCount === 0) {
            toggle.checked = false;
            toggle.indeterminate = false;
        } else if (checkedCount === totalCount) {
            toggle.checked = true;
            toggle.indeterminate = false;
        } else {
            toggle.checked = false;
            toggle.indeterminate = true;
        }
    });
});
</script>

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