<?php
session_start();
require 'config.php';

// التأكد من أن المستخدم مسجل دخول
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

header('Content-Type: text/html; charset=UTF-8');

// معالجة طلب تصدير Excel
if (isset($_GET['export']) && $_GET['export'] === 'excel') {
    // التحقق من وجود الجدول أولاً
    $tableExists = false;
    try {
        $checkTable = $conn->query("SHOW TABLES LIKE 'device_contacts'");
        $tableExists = $checkTable->rowCount() > 0;
    } catch (PDOException $e) {
        $tableExists = false;
    }
    
    if (!$tableExists) {
        header('Content-Type: text/html; charset=UTF-8');
        echo '<html><head><meta charset="UTF-8"></head><body>';
        echo '<h2>خطأ: الجدول غير موجود</h2>';
        echo '<p>الجدول device_contacts غير موجود في قاعدة البيانات. يرجى إنشاؤه أولاً.</p>';
        echo '<a href="contacts_backup.php">العودة</a>';
        echo '</body></html>';
        exit;
    }
    
    $deviceId = isset($_GET['device_id']) ? trim($_GET['device_id']) : null;
    $contacts = [];
    
    // استعلام للحصول على جهات الاتصال
    try {
        if ($deviceId) {
            $stmt = $conn->prepare("
                SELECT device_name, contact_name, phone_number, email, organization, notes, uploaded_at
                FROM device_contacts 
                WHERE device_id = ?
                ORDER BY uploaded_at DESC, contact_name ASC
            ");
            $stmt->execute([$deviceId]);
            $contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $deviceName = !empty($contacts) ? ($contacts[0]['device_name'] ?? $deviceId) : $deviceId;
        } else {
            // جميع الأجهزة
            $stmt = $conn->prepare("
                SELECT device_id, device_name, contact_name, phone_number, email, organization, notes, uploaded_at
                FROM device_contacts 
                ORDER BY device_id ASC, uploaded_at DESC, contact_name ASC
            ");
            $stmt->execute();
            $contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $deviceName = 'جميع الأجهزة';
        }
    } catch (PDOException $e) {
        header('Content-Type: text/html; charset=UTF-8');
        echo "\xEF\xBB\xBF";
        echo '<html lang="ar" dir="rtl"><head><meta charset="UTF-8"><title>خطأ</title>';
        echo '<style>body{font-family:Arial;text-align:center;padding:50px;background:#f5f5f5;}';
        echo '.container{background:white;padding:30px;border-radius:10px;max-width:600px;margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,0.1);}';
        echo 'a{display:inline-block;margin-top:20px;padding:10px 20px;background:#667eea;color:white;text-decoration:none;border-radius:5px;}</style></head><body>';
        echo '<div class="container">';
        echo '<h2 style="color:#d32f2f;">❌ خطأ في قاعدة البيانات</h2>';
        echo '<p style="color:#666;margin:20px 0;">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</p>';
        echo '<a href="contacts_backup.php">العودة</a>';
        echo '</div></body></html>';
        exit;
    }
    
    // التحقق من وجود جهات اتصال
    if (empty($contacts)) {
        header('Content-Type: text/html; charset=UTF-8');
        echo "\xEF\xBB\xBF";
        echo '<html lang="ar" dir="rtl"><head><meta charset="UTF-8"><title>لا توجد بيانات</title>';
        echo '<style>body{font-family:Arial;text-align:center;padding:50px;background:#f5f5f5;}';
        echo '.container{background:white;padding:30px;border-radius:10px;max-width:600px;margin:0 auto;box-shadow:0 2px 10px rgba(0,0,0,0.1);}';
        echo 'a{display:inline-block;margin-top:20px;padding:10px 20px;background:#667eea;color:white;text-decoration:none;border-radius:5px;}</style></head><body>';
        echo '<div class="container">';
        echo '<h2 style="color:#d32f2f;">⚠️ لا توجد جهات اتصال للتصدير</h2>';
        echo '<p style="color:#666;margin:20px 0;">لا توجد جهات اتصال محفوظة ' . ($deviceId ? 'للجهاز المحدد' : 'في قاعدة البيانات') . '.</p>';
        echo '<p style="color:#856404;background:#fff3cd;padding:15px;border-radius:5px;margin:20px 0;">';
        echo 'يرجى رفع جهات الاتصال من التطبيق أولاً:<br>';
        echo 'التطبيق → الإعدادات → رفع جهات الاتصال';
        echo '</p>';
        echo '<a href="contacts_backup.php">العودة إلى صفحة جهات الاتصال</a>';
        echo '</div></body></html>';
        exit;
    }
    
    // إعداد رأس Excel
    header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
    header('Content-Disposition: attachment; filename="contacts_backup_' . date('Y-m-d') . '.xls"');
    header('Pragma: no-cache');
    header('Expires: 0');
    
    // بدء HTML مع BOM لـ UTF-8
    echo "\xEF\xBB\xBF";
    echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>';
    echo '<table border="1">';
    
    // رأس الجدول
    echo '<tr style="background-color: #4CAF50; color: white; font-weight: bold;">';
    if (!$deviceId) {
        echo '<th>معرف الجهاز</th><th>اسم الجهاز</th>';
    }
    echo '<th>اسم جهة الاتصال</th>';
    echo '<th>رقم الهاتف</th>';
    echo '<th>البريد الإلكتروني</th>';
    echo '<th>المؤسسة</th>';
    echo '<th>ملاحظات</th>';
    echo '<th>تاريخ الرفع</th>';
    echo '</tr>';
    
    // البيانات
    foreach ($contacts as $contact) {
        echo '<tr>';
        if (!$deviceId) {
            echo '<td>' . htmlspecialchars($contact['device_id'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
            echo '<td>' . htmlspecialchars($contact['device_name'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        }
        echo '<td>' . htmlspecialchars($contact['contact_name'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '<td>' . htmlspecialchars($contact['phone_number'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '<td>' . htmlspecialchars($contact['email'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '<td>' . htmlspecialchars($contact['organization'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '<td>' . htmlspecialchars($contact['notes'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '<td>' . htmlspecialchars($contact['uploaded_at'] ?? '', ENT_QUOTES, 'UTF-8') . '</td>';
        echo '</tr>';
    }
    
    echo '</table></body></html>';
    exit;
}

// التحقق من وجود الجدول أولاً
$tableExists = false;
try {
    $checkTable = $conn->query("SHOW TABLES LIKE 'device_contacts'");
    $tableExists = $checkTable->rowCount() > 0;
} catch (PDOException $e) {
    $tableExists = false;
}

// إذا لم يكن الجدول موجوداً، أنشئه تلقائياً
if (!$tableExists) {
    try {
        $conn->exec("
            CREATE TABLE IF NOT EXISTS device_contacts (
                id INT AUTO_INCREMENT PRIMARY KEY,
                device_id VARCHAR(255) NOT NULL,
                device_name VARCHAR(255) DEFAULT NULL,
                contact_name VARCHAR(255) DEFAULT NULL,
                phone_number VARCHAR(50) DEFAULT NULL,
                email VARCHAR(255) DEFAULT NULL,
                organization VARCHAR(255) DEFAULT NULL,
                notes TEXT DEFAULT NULL,
                uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                INDEX idx_device_id (device_id),
                INDEX idx_uploaded_at (uploaded_at),
                INDEX idx_device_uploaded (device_id, uploaded_at)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
        ");
        $tableExists = true;
    } catch (PDOException $e) {
        // في حالة فشل الإنشاء، سنعرض رسالة خطأ لاحقاً
    }
}

// الحصول على قائمة الأجهزة التي لديها جهات اتصال
$devices = [];
if ($tableExists) {
    try {
        $devicesStmt = $conn->prepare("
            SELECT DISTINCT device_id, device_name, 
                   COUNT(*) as contact_count,
                   MAX(uploaded_at) as last_upload
            FROM device_contacts 
            GROUP BY device_id, device_name
            ORDER BY last_upload DESC
        ");
        $devicesStmt->execute();
        $devices = $devicesStmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        // في حالة الخطأ، سنعرض رسالة للمستخدم
        $devices = [];
    }
}

// الحصول على جهات الاتصال للجهاز المحدد
$selectedDeviceId = isset($_GET['device_id']) ? trim($_GET['device_id']) : null;
$contacts = [];
if ($selectedDeviceId && $tableExists) {
    try {
        $contactsStmt = $conn->prepare("
            SELECT contact_name, phone_number, email, organization, notes, uploaded_at
            FROM device_contacts 
            WHERE device_id = ?
            ORDER BY contact_name ASC
        ");
        $contactsStmt->execute([$selectedDeviceId]);
        $contacts = $contactsStmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        $contacts = [];
    }
}
?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>نسخ احتياطي لجهات الاتصال</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            padding: 20px;
            min-height: 100vh;
        }
        .container {
            max-width: 1400px;
            margin: 0 auto;
            background: white;
            border-radius: 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.3);
            overflow: hidden;
        }
        .header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 20px;
            text-align: center;
        }
        .header h1 {
            margin-bottom: 10px;
        }
        .nav-links {
            margin-top: 15px;
        }
        .nav-links a {
            color: white;
            text-decoration: none;
            margin: 0 10px;
            padding: 8px 15px;
            background: rgba(255,255,255,0.2);
            border-radius: 5px;
            display: inline-block;
        }
        .nav-links a:hover {
            background: rgba(255,255,255,0.3);
        }
        .content {
            padding: 30px;
        }
        .devices-section {
            margin-bottom: 30px;
        }
        .devices-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 15px;
            margin-top: 15px;
        }
        .device-card {
            border: 2px solid #e0e0e0;
            border-radius: 8px;
            padding: 15px;
            background: #f9f9f9;
            transition: all 0.3s;
            cursor: pointer;
        }
        .device-card:hover {
            border-color: #667eea;
            box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
            transform: translateY(-2px);
        }
        .device-card.active {
            border-color: #667eea;
            background: #f0f4ff;
        }
        .device-card h3 {
            color: #333;
            margin-bottom: 10px;
        }
        .device-info {
            color: #666;
            font-size: 14px;
            margin: 5px 0;
        }
        .btn {
            display: inline-block;
            padding: 10px 20px;
            background: #667eea;
            color: white;
            text-decoration: none;
            border-radius: 5px;
            border: none;
            cursor: pointer;
            font-size: 14px;
            margin: 5px;
            transition: background 0.3s;
        }
        .btn:hover {
            background: #5568d3;
        }
        .btn-success {
            background: #4CAF50;
        }
        .btn-success:hover {
            background: #45a049;
        }
        .contacts-section {
            margin-top: 30px;
        }
        .contacts-table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 15px;
            background: white;
        }
        .contacts-table th {
            background: #667eea;
            color: white;
            padding: 12px;
            text-align: right;
            font-weight: bold;
        }
        .contacts-table td {
            padding: 10px;
            border-bottom: 1px solid #e0e0e0;
        }
        .contacts-table tr:hover {
            background: #f5f5f5;
        }
        .no-contacts {
            text-align: center;
            padding: 40px;
            color: #999;
        }
        .export-buttons {
            margin: 20px 0;
            text-align: center;
        }
        .stats {
            display: flex;
            gap: 20px;
            margin-bottom: 20px;
            flex-wrap: wrap;
        }
        .stat-card {
            flex: 1;
            min-width: 200px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 20px;
            border-radius: 8px;
            text-align: center;
        }
        .stat-card h3 {
            font-size: 32px;
            margin-bottom: 5px;
        }
        .stat-card p {
            font-size: 14px;
            opacity: 0.9;
        }
        .btn-warning {
            background: #f59e0b;
        }
        .btn-warning:hover {
            background: #d97706;
        }
        .loading {
            opacity: 0.6;
            cursor: not-allowed;
        }
        /* Enhanced Search and Filters */
        .search-filters-container {
            background: #f8f9fa;
            border-radius: 8px;
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }
        .search-box {
            position: relative;
            margin-bottom: 15px;
        }
        .search-box input {
            width: 100%;
            padding: 12px 45px 12px 15px;
            border: 2px solid #e0e0e0;
            border-radius: 8px;
            font-size: 16px;
            transition: all 0.3s;
        }
        .search-box input:focus {
            outline: none;
            border-color: #667eea;
            box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
        }
        .search-box::after {
            content: '🔍';
            position: absolute;
            right: 15px;
            top: 50%;
            transform: translateY(-50%);
            font-size: 20px;
            pointer-events: none;
        }
        .filters-row {
            display: flex;
            gap: 15px;
            flex-wrap: wrap;
            align-items: flex-end;
        }
        .filter-group {
            flex: 1;
            min-width: 200px;
        }
        .filter-group label {
            display: block;
            margin-bottom: 5px;
            color: #333;
            font-weight: 600;
            font-size: 14px;
        }
        .filter-group select,
        .filter-group input {
            width: 100%;
            padding: 10px;
            border: 2px solid #e0e0e0;
            border-radius: 6px;
            font-size: 14px;
            transition: all 0.3s;
        }
        .filter-group select:focus,
        .filter-group input:focus {
            outline: none;
            border-color: #667eea;
        }
        .filter-actions {
            display: flex;
            gap: 10px;
        }
        .btn-filter {
            padding: 10px 20px;
            background: #667eea;
            color: white;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            font-size: 14px;
            transition: all 0.3s;
        }
        .btn-filter:hover {
            background: #5568d3;
        }
        .btn-reset {
            background: #6c757d;
        }
        .btn-reset:hover {
            background: #5a6268;
        }
        .filter-badge {
            display: inline-block;
            background: #667eea;
            color: white;
            padding: 4px 10px;
            border-radius: 12px;
            font-size: 12px;
            margin: 5px 5px 0 0;
        }
        .filter-badge .remove {
            margin-right: 5px;
            cursor: pointer;
            font-weight: bold;
        }
        .contacts-table tr.hidden {
            display: none;
        }
        .no-results {
            text-align: center;
            padding: 40px;
            color: #999;
            font-size: 16px;
        }
    </style>
    <script>
        /**
         * Enhanced Duplicate Removal Function
         * تنظيف التكرارات التلقائي
         */
        async function removeDuplicates() {
            const btn = document.getElementById('removeDuplicatesBtn');
            if (!btn) return;
            
            // التحقق من رغبة المستخدم
            if (!confirm('هل أنت متأكد من تنظيف التكرارات في قاعدة البيانات؟\n\nسيتم حذف جميع السجلات المكررة تلقائياً.')) {
                return;
            }
            
            // تعطيل الزر وإظهار حالة التحميل
            btn.disabled = true;
            btn.classList.add('loading');
            const originalText = btn.textContent;
            btn.textContent = '⏳ جاري التنظيف...';
            
            try {
                const response = await fetch('remove_duplicate_contacts.php', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    }
                });
                
                const result = await response.json();
                
                if (result.status === 'success') {
                    // عرض رسالة نجاح مع التفاصيل
                    alert(
                        '✅ تم تنظيف قاعدة البيانات بنجاح!\n\n' +
                        `📊 العدد قبل التنظيف: ${result.total_before}\n` +
                        `📊 العدد بعد التنظيف: ${result.total_after}\n` +
                        `🗑️ تم حذف: ${result.removed} سجل مكرر\n` +
                        `💾 تم توفير: ${result.saved_space} سجل`
                    );
                    
                    // إعادة تحميل الصفحة لعرض النتائج المحدثة
                    window.location.reload();
                } else {
                    alert('❌ خطأ: ' + (result.message || 'حدث خطأ أثناء التنظيف'));
                    btn.disabled = false;
                    btn.classList.remove('loading');
                    btn.textContent = originalText;
                }
            } catch (error) {
                console.error('Error removing duplicates:', error);
                alert('❌ خطأ في الاتصال بالخادم: ' + error.message);
                btn.disabled = false;
                btn.classList.remove('loading');
                btn.textContent = originalText;
            }
        }
        
        /**
         * Enhanced Device Filtering System
         * نظام تصفية الأجهزة
         */
        function filterDevices() {
            const searchInput = document.getElementById('deviceSearchInput');
            const contactCountFilter = document.getElementById('contactCountFilter');
            const lastUploadFilter = document.getElementById('lastUploadFilter');
            const devicesGrid = document.getElementById('devicesGrid');
            const noDevicesFound = document.getElementById('noDevicesFound');
            const deviceCountBadge = document.getElementById('deviceCountBadge');
            
            if (!devicesGrid) return;
            
            const searchTerm = (searchInput?.value || '').toLowerCase().trim();
            const countFilter = contactCountFilter?.value || '';
            const uploadFilter = lastUploadFilter?.value || '';
            
            const deviceCards = devicesGrid.querySelectorAll('.device-card');
            let visibleCount = 0;
            const activeFilters = [];
            
            deviceCards.forEach(card => {
                const deviceName = card.getAttribute('data-device-name') || '';
                const deviceId = card.getAttribute('data-device-id') || '';
                const contactCount = parseInt(card.getAttribute('data-contact-count') || '0');
                const lastUpload = parseInt(card.getAttribute('data-last-upload') || '0');
                
                let matches = true;
                
                // البحث النصي
                if (searchTerm) {
                    matches = matches && (deviceName.includes(searchTerm) || deviceId.includes(searchTerm));
                    if (matches && !activeFilters.includes('بحث: ' + searchTerm)) {
                        activeFilters.push('بحث: ' + searchTerm);
                    }
                }
                
                // فلتر عدد جهات الاتصال
                if (countFilter) {
                    let countMatches = false;
                    if (countFilter === '0-100') countMatches = contactCount >= 0 && contactCount <= 100;
                    else if (countFilter === '101-500') countMatches = contactCount >= 101 && contactCount <= 500;
                    else if (countFilter === '501-1000') countMatches = contactCount >= 501 && contactCount <= 1000;
                    else if (countFilter === '1001-5000') countMatches = contactCount >= 1001 && contactCount <= 5000;
                    else if (countFilter === '5001+') countMatches = contactCount > 5000;
                    
                    matches = matches && countMatches;
                    if (countMatches && !activeFilters.includes('عدد: ' + countFilter)) {
                        activeFilters.push('عدد: ' + countFilter);
                    }
                }
                
                // فلتر آخر رفع
                if (uploadFilter) {
                    const now = Math.floor(Date.now() / 1000);
                    const uploadTime = lastUpload;
                    const diff = now - uploadTime;
                    
                    let uploadMatches = false;
                    if (uploadFilter === 'today') uploadMatches = diff < 86400; // 24 hours
                    else if (uploadFilter === 'week') uploadMatches = diff < 604800; // 7 days
                    else if (uploadFilter === 'month') uploadMatches = diff < 2592000; // 30 days
                    else if (uploadFilter === 'older') uploadMatches = diff >= 2592000;
                    
                    matches = matches && uploadMatches;
                    if (uploadMatches && !activeFilters.includes('رفع: ' + uploadFilter)) {
                        activeFilters.push('رفع: ' + uploadFilter);
                    }
                }
                
                if (matches) {
                    card.style.display = '';
                    visibleCount++;
                } else {
                    card.style.display = 'none';
                }
            });
            
            // عرض/إخفاء رسالة "لا توجد نتائج"
            if (visibleCount === 0) {
                noDevicesFound.style.display = 'block';
                devicesGrid.style.display = 'none';
            } else {
                noDevicesFound.style.display = 'none';
                devicesGrid.style.display = 'grid';
            }
            
            // تحديث العداد
            if (deviceCountBadge) {
                deviceCountBadge.textContent = `(${visibleCount} جهاز)`;
            }
            
            // عرض الفلاتر النشطة
            updateActiveFilters(activeFilters);
        }
        
        /**
         * Reset Device Filters
         */
        function resetFilters() {
            const searchInput = document.getElementById('deviceSearchInput');
            const contactCountFilter = document.getElementById('contactCountFilter');
            const lastUploadFilter = document.getElementById('lastUploadFilter');
            
            if (searchInput) searchInput.value = '';
            if (contactCountFilter) contactCountFilter.value = '';
            if (lastUploadFilter) lastUploadFilter.value = '';
            
            filterDevices();
        }
        
        /**
         * Update Active Filters Display
         */
        let currentActiveFilters = [];
        function updateActiveFilters(filters) {
            const activeFiltersDiv = document.getElementById('activeFilters');
            if (!activeFiltersDiv) return;
            
            currentActiveFilters = filters;
            
            if (filters.length === 0) {
                activeFiltersDiv.innerHTML = '';
                return;
            }
            
            let html = '<strong>الفلاتر النشطة:</strong> ';
            filters.forEach((filter, index) => {
                html += `<span class="filter-badge">${filter} <span class="remove" onclick="removeFilterByIndex(${index})">×</span></span>`;
            });
            activeFiltersDiv.innerHTML = html;
        }
        
        /**
         * Remove Filter by Index
         */
        function removeFilterByIndex(index) {
            const filter = currentActiveFilters[index];
            if (!filter) return;
            
            // إزالة الفلتر من الواجهة
            if (filter.startsWith('بحث:')) {
                const searchInput = document.getElementById('deviceSearchInput');
                if (searchInput) searchInput.value = '';
            } else if (filter.startsWith('عدد:')) {
                const contactCountFilter = document.getElementById('contactCountFilter');
                if (contactCountFilter) contactCountFilter.value = '';
            } else if (filter.startsWith('رفع:')) {
                const lastUploadFilter = document.getElementById('lastUploadFilter');
                if (lastUploadFilter) lastUploadFilter.value = '';
            }
            
            // إعادة تطبيق الفلاتر
            filterDevices();
        }
        
        /**
         * Enhanced Contact Filtering System
         * نظام تصفية جهات الاتصال
         */
        function filterContacts() {
            const searchInput = document.getElementById('contactSearchInput');
            const fieldFilter = document.getElementById('contactFieldFilter');
            const contactsTable = document.getElementById('contactsTable');
            const noContactsFound = document.getElementById('noContactsFound');
            const contactCountDisplay = document.getElementById('contactCountDisplay');
            
            if (!contactsTable) return;
            
            const searchTerm = (searchInput?.value || '').toLowerCase().trim();
            const field = fieldFilter?.value || 'all';
            
            const rows = contactsTable.querySelectorAll('tbody tr');
            let visibleCount = 0;
            
            rows.forEach(row => {
                const name = row.getAttribute('data-name') || '';
                const phone = row.getAttribute('data-phone') || '';
                const email = row.getAttribute('data-email') || '';
                const org = row.getAttribute('data-org') || '';
                
                let matches = true;
                
                if (searchTerm) {
                    if (field === 'all') {
                        matches = name.includes(searchTerm) || phone.includes(searchTerm) || 
                                 email.includes(searchTerm) || org.includes(searchTerm);
                    } else if (field === 'name') {
                        matches = name.includes(searchTerm);
                    } else if (field === 'phone') {
                        matches = phone.includes(searchTerm);
                    } else if (field === 'email') {
                        matches = email.includes(searchTerm);
                    } else if (field === 'organization') {
                        matches = org.includes(searchTerm);
                    }
                }
                
                if (matches) {
                    row.classList.remove('hidden');
                    visibleCount++;
                } else {
                    row.classList.add('hidden');
                }
            });
            
            // عرض/إخفاء رسالة "لا توجد نتائج"
            if (visibleCount === 0 && searchTerm) {
                noContactsFound.style.display = 'block';
                contactsTable.style.display = 'none';
            } else {
                noContactsFound.style.display = 'none';
                contactsTable.style.display = 'table';
            }
            
            // تحديث العداد
            if (contactCountDisplay) {
                const total = rows.length;
                contactCountDisplay.textContent = `إجمالي: ${total} جهة اتصال | معروض: ${visibleCount}`;
            }
        }
        
        /**
         * Reset Contact Filters
         */
        function resetContactFilters() {
            const searchInput = document.getElementById('contactSearchInput');
            const fieldFilter = document.getElementById('contactFieldFilter');
            
            if (searchInput) searchInput.value = '';
            if (fieldFilter) fieldFilter.value = 'all';
            
            filterContacts();
        }
        
        // تحديث العدد عند تحميل الصفحة
        document.addEventListener('DOMContentLoaded', function() {
            if (document.getElementById('devicesGrid')) {
                filterDevices();
            }
        });
    </script>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>📱 نسخ احتياطي لجهات الاتصال</h1>
            <div class="nav-links">
                <a href="dashboard.php">العودة إلى الداشبورد</a>
            </div>
        </div>
        <div class="content">
            <?php if (!$tableExists): ?>
                <div style="background: #ffebee; border: 2px solid #f44336; border-radius: 8px; padding: 20px; margin-bottom: 20px; text-align: center;">
                    <h2 style="color: #d32f2f; margin-bottom: 10px;">⚠️ تحذير</h2>
                    <p style="color: #c62828; margin-bottom: 15px;">
                        الجدول <strong>device_contacts</strong> غير موجود في قاعدة البيانات.
                    </p>
                    <p style="color: #c62828; margin-bottom: 15px;">
                        تم محاولة إنشاء الجدول تلقائياً، لكن فشلت العملية.
                    </p>
                    <p style="color: #c62828;">
                        يرجى تشغيل ملف <strong>create_contacts_table.sql</strong> يدوياً في قاعدة البيانات.
                    </p>
                </div>
            <?php else: ?>
            <div class="stats">
                <div class="stat-card">
                    <h3><?php echo count($devices); ?></h3>
                    <p>عدد الأجهزة</p>
                </div>
                <div class="stat-card">
                    <h3><?php 
                        try {
                            $totalContacts = $conn->query("SELECT COUNT(*) FROM device_contacts")->fetchColumn();
                            echo $totalContacts;
                        } catch (PDOException $e) {
                            echo '0';
                        }
                    ?></h3>
                    <p>إجمالي جهات الاتصال</p>
                </div>
            </div>
            <?php endif; ?>

            <!-- Enhanced Search and Filters Section -->
            <?php if (!empty($devices)): ?>
            <div class="search-filters-container">
                <div class="search-box">
                    <input type="text" id="deviceSearchInput" placeholder="🔍 ابحث عن جهاز بالاسم أو معرف الجهاز..." onkeyup="filterDevices()">
                </div>
                <div class="filters-row">
                    <div class="filter-group">
                        <label>📱 تصفية حسب عدد جهات الاتصال</label>
                        <select id="contactCountFilter" onchange="filterDevices()">
                            <option value="">الكل</option>
                            <option value="0-100">0 - 100</option>
                            <option value="101-500">101 - 500</option>
                            <option value="501-1000">501 - 1,000</option>
                            <option value="1001-5000">1,001 - 5,000</option>
                            <option value="5001+">أكثر من 5,000</option>
                        </select>
                    </div>
                    <div class="filter-group">
                        <label>📅 تصفية حسب آخر رفع</label>
                        <select id="lastUploadFilter" onchange="filterDevices()">
                            <option value="">الكل</option>
                            <option value="today">اليوم</option>
                            <option value="week">آخر أسبوع</option>
                            <option value="month">آخر شهر</option>
                            <option value="older">أقدم من شهر</option>
                        </select>
                    </div>
                    <div class="filter-actions">
                        <button class="btn-filter" onclick="filterDevices()">🔍 تطبيق الفلاتر</button>
                        <button class="btn-filter btn-reset" onclick="resetFilters()">🔄 إعادة تعيين</button>
                    </div>
                </div>
                <div id="activeFilters" style="margin-top: 15px;"></div>
            </div>
            <?php endif; ?>

            <div class="devices-section">
                <h2>الأجهزة المتاحة <span id="deviceCountBadge" style="font-size: 14px; color: #667eea;"></span></h2>
                <?php if (empty($devices)): ?>
                    <div style="background: #fff3cd; border: 2px solid #ffc107; border-radius: 8px; padding: 25px; margin: 20px 0; text-align: center;">
                        <h3 style="color: #856404; margin-bottom: 15px;">📱 لا توجد جهات اتصال محفوظة بعد</h3>
                        <p style="color: #856404; margin-bottom: 20px; font-size: 16px;">
                            لم يتم رفع أي جهات اتصال من الأجهزة بعد.
                        </p>
                        <div style="background: white; padding: 20px; border-radius: 5px; text-align: right; margin: 20px 0;">
                            <h4 style="color: #333; margin-bottom: 15px;">📋 خطوات رفع جهات الاتصال:</h4>
                            <ol style="color: #666; line-height: 2; text-align: right; padding-right: 20px;">
                                <li>افتح التطبيق على الجهاز</li>
                                <li>اذهب إلى <strong>الإعدادات</strong></li>
                                <li>اضغط على زر <strong>"رفع جهات الاتصال"</strong></li>
                                <li>امنح إذن الوصول إلى جهات الاتصال (إذا طُلب منك)</li>
                                <li>انتظر حتى يتم رفع جميع جهات الاتصال</li>
                                <li>ستظهر رسالة نجاح عند اكتمال الرفع</li>
                            </ol>
                        </div>
                        <p style="color: #856404; font-size: 14px; margin-top: 15px;">
                            💡 <strong>ملاحظة:</strong> يجب أن يكون التطبيق مثبتاً على الجهاز وأن يكون لديه إذن الوصول إلى جهات الاتصال.
                        </p>
                    </div>
                <?php else: ?>
                <div class="devices-grid" id="devicesGrid">
                        <?php foreach ($devices as $device): ?>
                            <div class="device-card <?php echo ($selectedDeviceId === $device['device_id']) ? 'active' : ''; ?>" 
                                 data-device-name="<?php echo htmlspecialchars(strtolower($device['device_name'] ?? $device['device_id']), ENT_QUOTES, 'UTF-8'); ?>"
                                 data-device-id="<?php echo htmlspecialchars(strtolower($device['device_id']), ENT_QUOTES, 'UTF-8'); ?>"
                                 data-contact-count="<?php echo $device['contact_count']; ?>"
                                 data-last-upload="<?php echo strtotime($device['last_upload']); ?>"
                                 onclick="window.location.href='?device_id=<?php echo urlencode($device['device_id']); ?>'">
                                <h3><?php echo htmlspecialchars($device['device_name'] ?? $device['device_id'], ENT_QUOTES, 'UTF-8'); ?></h3>
                                <div class="device-info">
                                    <strong>عدد جهات الاتصال:</strong> <?php echo $device['contact_count']; ?>
                                </div>
                                <div class="device-info">
                                    <strong>آخر رفع:</strong> <?php echo date('Y-m-d H:i', strtotime($device['last_upload'])); ?>
                                </div>
                            </div>
                        <?php endforeach; ?>
                </div>
                <div id="noDevicesFound" class="no-results" style="display: none;">
                    <p>🔍 لم يتم العثور على أجهزة تطابق معايير البحث</p>
                </div>
                <?php endif; ?>
            </div>

            <?php if ($selectedDeviceId): ?>
                <div class="contacts-section">
                    <h2>جهات الاتصال - <?php echo htmlspecialchars($devices[array_search($selectedDeviceId, array_column($devices, 'device_id'))]['device_name'] ?? $selectedDeviceId, ENT_QUOTES, 'UTF-8'); ?></h2>
                    
                    <!-- Search and Filter for Contacts -->
                    <?php if (!empty($contacts)): ?>
                    <div class="search-filters-container" style="margin-bottom: 20px;">
                        <div class="search-box">
                            <input type="text" id="contactSearchInput" placeholder="🔍 ابحث في الأسماء، أرقام الهواتف، البريد الإلكتروني..." onkeyup="filterContacts()">
                        </div>
                        <div class="filters-row">
                            <div class="filter-group">
                                <label>📋 تصفية حسب الحقل</label>
                                <select id="contactFieldFilter" onchange="filterContacts()">
                                    <option value="all">الكل</option>
                                    <option value="name">الاسم فقط</option>
                                    <option value="phone">رقم الهاتف فقط</option>
                                    <option value="email">البريد الإلكتروني فقط</option>
                                    <option value="organization">المؤسسة فقط</option>
                                </select>
                            </div>
                            <div class="filter-actions">
                                <button class="btn-filter" onclick="filterContacts()">🔍 تطبيق</button>
                                <button class="btn-filter btn-reset" onclick="resetContactFilters()">🔄 إعادة تعيين</button>
                            </div>
                        </div>
                        <div style="margin-top: 10px; color: #667eea; font-weight: 600;">
                            <span id="contactCountDisplay">إجمالي: <?php echo count($contacts); ?> جهة اتصال</span>
                        </div>
                    </div>
                    <?php endif; ?>
                    
                    <div class="export-buttons">
                        <a href="?export=excel&device_id=<?php echo urlencode($selectedDeviceId); ?>" class="btn btn-success">
                            📥 تصدير Excel للجهاز المحدد
                        </a>
                        <a href="?export=excel" class="btn btn-success">
                            📥 تصدير Excel لجميع الأجهزة
                        </a>
                        <button onclick="removeDuplicates()" class="btn btn-warning" id="removeDuplicatesBtn">
                            🧹 تنظيف التكرارات التلقائي
                        </button>
                    </div>

                    <?php if (empty($contacts)): ?>
                        <div class="no-contacts">
                            <p>لا توجد جهات اتصال لهذا الجهاز</p>
                        </div>
                    <?php else: ?>
                        <table class="contacts-table" id="contactsTable">
                            <thead>
                                <tr>
                                    <th>اسم جهة الاتصال</th>
                                    <th>رقم الهاتف</th>
                                    <th>البريد الإلكتروني</th>
                                    <th>المؤسسة</th>
                                    <th>ملاحظات</th>
                                    <th>تاريخ الرفع</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($contacts as $contact): ?>
                                    <tr data-name="<?php echo htmlspecialchars(strtolower($contact['contact_name'] ?? ''), ENT_QUOTES, 'UTF-8'); ?>"
                                        data-phone="<?php echo htmlspecialchars(strtolower($contact['phone_number'] ?? ''), ENT_QUOTES, 'UTF-8'); ?>"
                                        data-email="<?php echo htmlspecialchars(strtolower($contact['email'] ?? ''), ENT_QUOTES, 'UTF-8'); ?>"
                                        data-org="<?php echo htmlspecialchars(strtolower($contact['organization'] ?? ''), ENT_QUOTES, 'UTF-8'); ?>">
                                        <td><?php echo htmlspecialchars($contact['contact_name'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td><?php echo htmlspecialchars($contact['phone_number'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td><?php echo htmlspecialchars($contact['email'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td><?php echo htmlspecialchars($contact['organization'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td><?php echo htmlspecialchars($contact['notes'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td><?php echo htmlspecialchars($contact['uploaded_at'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                        <div id="noContactsFound" class="no-results" style="display: none;">
                            <p>🔍 لم يتم العثور على جهات اتصال تطابق معايير البحث</p>
                        </div>
                    <?php endif; ?>
                </div>
            <?php else: ?>
                <?php if (!empty($devices)): ?>
                    <div class="export-buttons">
                        <a href="?export=excel" class="btn btn-success">
                            📥 تصدير Excel لجميع الأجهزة
                        </a>
                        <button onclick="removeDuplicates()" class="btn" style="background: #f59e0b; margin-right: 10px;" id="removeDuplicatesBtn">
                            🧹 تنظيف التكرارات التلقائي
                        </button>
                    </div>
                <?php endif; ?>
            <?php endif; ?>
        </div>
    </div>
</body>
</html>

