// ============================================
// دوال التحقق من الصلاحيات الموحدة
// ============================================

(function() {
    // التحقق من تسجيل الدخول وصلاحية المشرف
    function checkSupervisorAuth() {
        try {
            const userData = localStorage.getItem('user') || sessionStorage.getItem('user');
            
            if (!userData) {
                console.warn('No user data found, redirecting to login');
                window.location.href = '/auth/login.html';
                return false;
            }
            
            const user = JSON.parse(userData);
            
            // التحقق من وجود توكن
            if (!user.token) {
                console.warn('No token found, redirecting to login');
                window.location.href = '/auth/login.html';
                return false;
            }
            
            // التحقق من صلاحية المشرف
            if (user.role !== 'supervisor' && user.role !== 'admin') {
                console.warn('User does not have supervisor role, redirecting to 403');
                window.location.href = '/errors/403.html';
                return false;
            }
            
            // تحديث اسم المستخدم في الواجهة إذا وجد
            const userNameElements = document.querySelectorAll('#userName, .user-name');
            userNameElements.forEach(el => {
                el.textContent = user.full_name || user.fullName || 'المشرف';
            });
            
            const userRoleElements = document.querySelectorAll('#userRole, .user-role');
            userRoleElements.forEach(el => {
                el.textContent = user.role_name === 'supervisor' ? 'مشرف فني' : 
                                (user.role_name === 'admin' ? 'مدير النظام' : 'مشرف');
            });
            
            return true;
            
        } catch (error) {
            console.error('Auth check error:', error);
            window.location.href = '/auth/login.html';
            return false;
        }
    }
    
    // دالة تسجيل الخروج
    window.logout = function() {
        if (typeof Swal !== 'undefined') {
            Swal.fire({
                title: 'تأكيد تسجيل الخروج',
                text: 'هل أنت متأكد من رغبتك في تسجيل الخروج؟',
                icon: 'question',
                showCancelButton: true,
                confirmButtonText: 'نعم، تسجيل خروج',
                cancelButtonText: 'إلغاء'
            }).then((result) => {
                if (result.isConfirmed) {
                    localStorage.removeItem('user');
                    sessionStorage.removeItem('user');
                    localStorage.removeItem('token');
                    sessionStorage.removeItem('token');
                    window.location.href = '/auth/login.html';
                }
            });
        } else {
            if (confirm('هل أنت متأكد من تسجيل الخروج؟')) {
                localStorage.clear();
                sessionStorage.clear();
                window.location.href = '/auth/login.html';
            }
        }
    };
    
    // دالة للحصول على المستخدم الحالي
    window.getCurrentUser = function() {
        try {
            const userData = localStorage.getItem('user') || sessionStorage.getItem('user');
            return userData ? JSON.parse(userData) : null;
        } catch (e) {
            return null;
        }
    };
    
    // دالة للتحقق من صلاحية محددة
    window.hasPermission = function(permission) {
        const user = getCurrentUser();
        if (!user) return false;
        if (user.role === 'admin') return true;
        return user.permissions && user.permissions.includes(permission);
    };
    
    // تشغيل التحقق عند تحميل الصفحة
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', checkSupervisorAuth);
    } else {
        checkSupervisorAuth();
    }
})();