/**
 * گزارشات - جستجوی زنده (Live Search)
 * با تکمیل خودکار (Autocomplete)
 */

document.addEventListener('DOMContentLoaded', function() {
    const searchInput = document.getElementById('liveSearch');
    const searchResults = document.getElementById('searchResults');
    const filterButtons = document.querySelectorAll('.filter-btn');
    const resultsTable = document.getElementById('resultsTable');
    const tableBody = document.getElementById('tableBody');
    const loadingSpinner = document.getElementById('loadingSpinner');

    let currentFilter = 'all';
    let searchTimer = null;

    // ============================================================
    // ۱. جستجوی زنده با تایپ کردن
    // ============================================================
    searchInput.addEventListener('input', function() {
        clearTimeout(searchTimer);
        const query = this.value.trim();
        
        if (query.length < 2) {
            searchResults.classList.add('d-none');
            if (query.length === 0) {
                // اگر جستجو خالی شد، نتایج کامل را نمایش بده
                loadTableData('', currentFilter);
            }
            return;
        }

        // نمایش اسپینر لودینگ
        loadingSpinner.classList.remove('d-none');
        
        // تأخیر برای جلوگیری از درخواست‌های زیاد
        searchTimer = setTimeout(function() {
            fetchLiveResults(query, currentFilter);
        }, 300);
    });

    // ============================================================
    // ۲. کلیک روی دکمه‌های فیلتر سریع
    // ============================================================
    filterButtons.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            e.preventDefault();
            
            // حذف کلاس active از همه دکمه‌ها
            filterButtons.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            
            currentFilter = this.dataset.filter;
            const query = searchInput.value.trim();
            
            if (query.length >= 2) {
                fetchLiveResults(query, currentFilter);
            } else {
                loadTableData('', currentFilter);
            }
        });
    });

    // ============================================================
    // ۳. کلیک روی یک نتیجه در لیست کشویی
    // ============================================================
    searchResults.addEventListener('click', function(e) {
        const item = e.target.closest('.search-result-item');
        if (!item) return;
        
        const memberId = item.dataset.id;
        const fullname = item.dataset.fullname;
        
        // پر کردن باکس جستجو با نام انتخاب شده
        searchInput.value = fullname;
        searchResults.classList.add('d-none');
        
        // بارگذاری اطلاعات کامل آن شخص
        loadSingleMember(memberId);
    });

    // ============================================================
    // ۴. بستن لیست کشویی با کلیک خارج از آن
    // ============================================================
    document.addEventListener('click', function(e) {
        if (!e.target.closest('#liveSearch') && !e.target.closest('#searchResults')) {
            searchResults.classList.add('d-none');
        }
    });

    // ============================================================
    // توابع کمکی
    // ============================================================

    // دریافت نتایج زنده از سرور
    function fetchLiveResults(query, filter) {
        fetch(`reports_ajax.php?search=${encodeURIComponent(query)}&filter_type=${filter}`)
            .then(response => response.json())
            .then(data => {
                loadingSpinner.classList.add('d-none');
                displaySearchResults(data);
                // جدول را هم با نتایج جستجو به‌روز کن
                updateTable(data);
            })
            .catch(error => {
                console.error('Error:', error);
                loadingSpinner.classList.add('d-none');
            });
    }

    // نمایش نتایج در لیست کشویی
    function displaySearchResults(results) {
        const container = searchResults;
        container.innerHTML = '';
        container.classList.remove('d-none');

        if (results.length === 0) {
            container.innerHTML = `
                <div class="search-result-empty">
                    <i class="bi bi-search"></i> هیچ نتیجه‌ای یافت نشد
                </div>
            `;
            return;
        }

        results.forEach(function(item) {
            const div = document.createElement('div');
            div.className = 'search-result-item';
            div.dataset.id = item.id;
            div.dataset.fullname = item.fullname;
            
            let statusBadge = '';
            if (item.status === 'انصرافی') {
                statusBadge = `<span class="badge bg-danger me-2">${item.status}</span>`;
            } else if (item.status === 'تکمیل شده') {
                statusBadge = `<span class="badge bg-success me-2">${item.status}</span>`;
            } else {
                statusBadge = `<span class="badge bg-primary me-2">${item.status}</span>`;
            }
            
            div.innerHTML = `
                <div class="d-flex align-items-center">
                    <div class="flex-grow-1">
                        <strong>${item.fullname}</strong>
                        <span class="text-muted small"> - ${item.national_code}</span>
                        <br>
                        <small class="text-muted">${item.education} - ${item.study_field}</small>
                    </div>
                    <div>
                        ${statusBadge}
                        <i class="bi bi-chevron-left text-muted"></i>
                    </div>
                </div>
            `;
            container.appendChild(div);
        });
    }

    // به‌روزرسانی جدول با نتایج جستجو
    function updateTable(results) {
        if (!tableBody) return;
        tableBody.innerHTML = '';

        if (results.length === 0) {
            tableBody.innerHTML = `
                <tr>
                    <td colspan="7" class="text-center py-4 text-muted">
                        <i class="bi bi-inbox" style="font-size: 2rem; display: block; margin-bottom: 8px;"></i>
                        هیچ نتیجه‌ای یافت نشد
                    </td>
                </tr>
            `;
            return;
        }

        let counter = 1;
        results.forEach(function(item) {
            const tr = document.createElement('tr');
            
            // تعیین رنگ وضعیت تماس
            let contactColor = 'secondary';
            if (item.contact_status === 'تماس گرفته شده') contactColor = 'success';
            else if (item.contact_status === 'تماس گرفته نشده') contactColor = 'secondary';
            else if (item.contact_status === 'در انتظار پاسخ') contactColor = 'warning';
            else if (item.contact_status === 'عدم پاسخ گویی') contactColor = 'danger';
            
            // تعیین رنگ وضعیت مدارک
            let docColor = 'warning';
            if (item.document_status === 'تایید شده') docColor = 'success';
            else if (item.document_status === 'مدارک تکمیل شده') docColor = 'info';
            else if (item.document_status === 'انصراف') docColor = 'danger';
            
            // تعیین رنگ وضعیت پرداخت
            let paymentColor = 'secondary';
            if (item.payment_status === 'پرداخت شده') paymentColor = 'success';
            else if (item.payment_status === 'پرداخت نشده') paymentColor = 'danger';
            else if (item.payment_status === 'در انتظار پرداخت') paymentColor = 'warning';
            else if (item.payment_status === 'عودت وجه') paymentColor = 'info';
            
            tr.innerHTML = `
                <td>${counter++}</td>
                <td>${item.fullname}</td>
                <td>${item.national_code}</td>
                <td>${item.education}</td>
                <td>${item.study_field}</td>
                <td><span class="badge bg-${item.status_color}">${item.status}</span></td>
                <td>
                    <a href="edit_member.php?id=${item.id}" class="btn btn-sm btn-primary">
                        <i class="bi bi-pencil"></i>
                    </a>
                </td>
            `;
            tableBody.appendChild(tr);
        });
    }

    // بارگذاری اطلاعات یک شخص خاص
    function loadSingleMember(memberId) {
        fetch(`reports_ajax.php?search=${memberId}&filter_type=all`)
            .then(response => response.json())
            .then(data => {
                if (data.length > 0) {
                    updateTable(data);
                }
            })
            .catch(error => console.error('Error:', error));
    }

    // بارگذاری کامل جدول (بدون جستجو)
    function loadTableData(query, filter) {
        loadingSpinner.classList.remove('d-none');
        fetch(`reports_ajax.php?search=${encodeURIComponent(query)}&filter_type=${filter}`)
            .then(response => response.json())
            .then(data => {
                loadingSpinner.classList.add('d-none');
                updateTable(data);
                searchResults.classList.add('d-none');
            })
            .catch(error => {
                console.error('Error:', error);
                loadingSpinner.classList.add('d-none');
            });
    }
});