/**
 * Real-time updates using polling
 */

let lastOrderId = 0;
let checkInterval = 5000; // 5 ثواني
let soundEnabled = true;
let realtimeInterval = null;

// التهيئة
document.addEventListener('DOMContentLoaded', function() {
    // الحصول على آخر رقم طلب
    fetchLastOrderId();
    
    // بدء التحديث التلقائي
    startRealTimeUpdates();
    
    // إعداد الصوت
    setupAudio();
});

/**
 * بدء التحديثات المباشرة
 */
function startRealTimeUpdates() {
    if (realtimeInterval) {
        clearInterval(realtimeInterval);
    }
    realtimeInterval = setInterval(checkNewOrders, checkInterval);
    console.log('Real-time updates started');
}

/**
 * إيقاف التحديثات المباشرة
 */
function stopRealTimeUpdates() {
    if (realtimeInterval) {
        clearInterval(realtimeInterval);
        realtimeInterval = null;
        console.log('Real-time updates stopped');
    }
}

/**
 * الحصول على آخر رقم طلب
 */
function fetchLastOrderId() {
    fetch('api/get_orders.php?status=pending')
        .then(response => response.json())
        .then(data => {
            if (data.orders && data.orders.length > 0) {
                lastOrderId = Math.max(...data.orders.map(o => o.id));
            }
        })
        .catch(error => console.error('Error fetching last order ID:', error));
}

/**
 * التحقق من وجود طلبات جديدة
 */
function checkNewOrders() {
    fetch(`api/check_new_orders.php?last_id=${lastOrderId}`)
        .then(response => response.json())
        .then(data => {
            if (data.success && data.new_orders && data.new_orders.length > 0) {
                // وصلت طلبات جديدة
                handleNewOrders(data.new_orders);
                
                // تحديث آخر رقم طلب
                const maxId = Math.max(...data.new_orders.map(o => o.id));
                if (maxId > lastOrderId) {
                    lastOrderId = maxId;
                }
            }
        })
        .catch(error => console.error('Error checking new orders:', error));
}

/**
 * معالجة الطلبات الجديدة
 */
function handleNewOrders(orders) {
    console.log('New orders received:', orders);
    
    // تشغيل صوت الإشعار
    playNotificationSound();
    
    // إظهار إشعار لكل طلب جديد
    orders.forEach(order => {
        showNewOrderNotification(order);
    });
    
    // إعادة تحميل الطلبات إذا كنا في الصفحة الرئيسية
    if (typeof loadOrders === 'function' && window.currentFilter) {
        loadOrders(window.currentFilter, true);
    }
}

/**
 * إظهار إشعار الطلب الجديد
 */
function showNewOrderNotification(order) {
    // إنشاء إشعار toast
    const toast = document.createElement('div');
    toast.className = 'notification success';
    toast.innerHTML = `
        <i class="bi bi-bell"></i>
        <div>
            <strong>طلب جديد #${order.id}</strong>
            <div class="small">${escapeHtml(order.customer_name)} - ${formatMoney(order.total)}</div>
        </div>
    `;
    
    document.body.appendChild(toast);
    
    setTimeout(() => {
        toast.classList.add('fade-out');
        setTimeout(() => toast.remove(), 300);
    }, 5000);
    
    // إظهار إشعار المتصفح إذا كان مسموحاً
    if (Notification.permission === 'granted') {
        new Notification('طلب جديد!', {
            body: `طلب #${order.id} من ${order.customer_name}`,
            icon: '/favicon.ico'
        });
    } else if (Notification.permission !== 'denied') {
        Notification.requestPermission();
    }
}

/**
 * إعداد الصوت
 */
function setupAudio() {
    // طلب إذن الإشعارات
    if (Notification.permission !== 'granted' && Notification.permission !== 'denied') {
        Notification.requestPermission();
    }
    
    // التحقق من إمكانية تشغيل الصوت
    const audio = document.getElementById('newOrderSound');
    if (audio) {
        // تحميل مسبق
        audio.load();
        
        // تفعيل الصوت عند أول تفاعل مع المستخدم
        document.addEventListener('click', function enableAudio() {
            audio.play().catch(() => {});
            document.removeEventListener('click', enableAudio);
        }, { once: true });
    }
}

/**
 * تشغيل صوت الإشعار
 */
function playNotificationSound() {
    if (!soundEnabled) return;
    
    const audio = document.getElementById('newOrderSound');
    if (audio) {
        audio.currentTime = 0;
        audio.play().catch(error => {
            console.log('Audio play failed:', error);
            // استخدام Web Audio API كبديل
            playBeepSound();
        });
    } else {
        playBeepSound();
    }
}

/**
 * تشغيل صوت بيب باستخدام Web Audio API (بديل)
 */
function playBeepSound() {
    try {
        const audioContext = new (window.AudioContext || window.webkitAudioContext)();
        const oscillator = audioContext.createOscillator();
        const gainNode = audioContext.createGain();
        
        oscillator.connect(gainNode);
        gainNode.connect(audioContext.destination);
        
        oscillator.frequency.value = 800;
        oscillator.type = 'sine';
        
        gainNode.gain.setValueAtTime(0.1, audioContext.currentTime);
        gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.5);
        
        oscillator.start(audioContext.currentTime);
        oscillator.stop(audioContext.currentTime + 0.5);
    } catch (e) {
        console.log('Web Audio API not supported');
    }
}

/**
 * تفعيل/تعطيل الصوت
 */
function toggleSound(enabled) {
    soundEnabled = enabled;
}

/**
 * دوال مساعدة (معاد استخدامها من orders.js)
 */
function escapeHtml(text) {
    if (!text) return '';
    const div = document.createElement('div');
    div.textContent = text;
    return div.innerHTML;
}

function formatMoney(amount) {
    return Number(amount).toLocaleString('ar-EG') + ' ريال';
}