/**
 * ملف نظام الإشعارات
 * المسار: /assets/js/notifications.js
 */

const Notifications = {
    /**
     * إظهار إشعار toast
     */
    toast(message, type = 'info', duration = 3000) {
        const icons = {
            success: '✅',
            error: '❌',
            warning: '⚠️',
            info: 'ℹ️'
        };
        
        const toast = document.createElement('div');
        toast.className = `toast-notification toast-${type}`;
        toast.innerHTML = `
            <span class="toast-icon">${icons[type]}</span>
            <span class="toast-message">${message}</span>
        `;
        
        document.body.appendChild(toast);
        
        setTimeout(() => {
            toast.classList.add('toast-hide');
            setTimeout(() => toast.remove(), 300);
        }, duration);
    },
    
    /**
     * إظهار إشعار نجاح
     */
    success(message) {
        this.toast(message, 'success');
    },
    
    /**
     * إظهار إشعار خطأ
     */
    error(message) {
        this.toast(message, 'error');
    },
    
    /**
     * إظهار إشعار تحذير
     */
    warning(message) {
        this.toast(message, 'warning');
    },
    
    /**
     * إظهار إشعار معلومات
     */
    info(message) {
        this.toast(message, 'info');
    },
    
    /**
     * تحديث عداد الإشعارات
     */
    async updateBadge() {
        try {
            const response = await API.common.getNotifications();
            if (response.success) {
                const unread = response.unread_count || 0;
                const badges = document.querySelectorAll('.notification-badge');
                
                badges.forEach(badge => {
                    badge.textContent = unread;
                    badge.style.display = unread > 0 ? 'block' : 'none';
                });
            }
        } catch (error) {
            console.error('Error updating badge:', error);
        }
    },
    
    /**
     * بدء تحديث تلقائي كل دقيقة
     */
    startAutoUpdate() {
        this.updateBadge();
        setInterval(() => this.updateBadge(), 60000);
    },
    
    /**
     * إظهار قائمة الإشعارات
     */
    showList(container) {
        API.common.getNotifications().then(response => {
            if (!response.success) return;
            
            const html = response.notifications.map(n => `
                <div class="notification-item ${n.is_read ? '' : 'unread'}" data-id="${n.id}">
                    <div class="notification-icon ${n.type}">
                        <i class="fas ${this.getIcon(n.type)}"></i>
                    </div>
                    <div class="notification-content">
                        <div class="notification-title">${n.title}</div>
                        <div class="notification-message">${n.message}</div>
                        <div class="notification-time">${Utils.timeAgo(n.created_at)}</div>
                    </div>
                    <button class="notification-mark-read" onclick="Notifications.markRead(${n.id})">
                        <i class="fas fa-check"></i>
                    </button>
                </div>
            `).join('');
            
            container.innerHTML = html || '<div class="empty-notifications">لا توجد إشعارات</div>';
        });
    },
    
    /**
     * تحديد إشعار كمقروء
     */
    async markRead(id) {
        await API.common.markNotificationRead(id);
        this.updateBadge();
    },
    
    /**
     * تحديد الكل كمقروء
     */
    async markAllRead() {
        await API.common.markNotificationRead();
        this.updateBadge();
    },
    
    /**
     * الحصول على أيقونة حسب النوع
     */
    getIcon(type) {
        const icons = {
            success: 'fa-check-circle',
            error: 'fa-exclamation-circle',
            warning: 'fa-exclamation-triangle',
            info: 'fa-info-circle'
        };
        return icons[type] || 'fa-bell';
    }
};

window.Notifications = Notifications;