/**
 * سیستم آپلود مدارک با Ajax و پیش‌نمایش
 * سامانه جامع مهدی
 */

document.addEventListener('DOMContentLoaded', function() {
    const uploadBoxes = document.querySelectorAll('.upload-box');
    
    // ============================================================
    // ۱. کلیک روی باکس آپلود
    // ============================================================
    uploadBoxes.forEach(function(box) {
        const fileInput = box.querySelector('.file-input');
        const placeholder = box.querySelector('.upload-placeholder');
        
        // کلیک روی باکس = انتخاب فایل
        box.addEventListener('click', function(e) {
            if (e.target.closest('.remove-file')) return;
            fileInput.click();
        });
        
        // ============================================================
        // ۲. انتخاب فایل
        // ============================================================
        fileInput.addEventListener('change', function() {
            const file = this.files[0];
            if (!file) return;
            
            const type = this.dataset.type;
            const hiddenInput = document.querySelector(`input[name="doc_${type}"]`);
            
            // نمایش وضعیت آپلود
            showUploadStatus(box, 'در حال آپلود...', 'loading');
            
            // آپلود با Ajax
            const formData = new FormData();
            formData.append('file', file);
            formData.append('doc_type', type);
            formData.append('ajax_action', 'upload_document');
            
            fetch(window.location.href, {
                method: 'POST',
                body: formData
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    // نمایش پیش‌نمایش
                    showPreview(box, data.file_path, file.name);
                    if (hiddenInput) {
                        hiddenInput.value = data.file_path;
                    }
                    showUploadStatus(box, '✅ آپلود شد', 'success');
                } else {
                    showUploadStatus(box, '❌ ' + data.message, 'error');
                    fileInput.value = '';
                }
            })
            .catch(function() {
                showUploadStatus(box, '❌ خطا در ارتباط با سرور', 'error');
                fileInput.value = '';
            });
        });
        
        // ============================================================
        // ۳. Drag & Drop
        // ============================================================
        box.addEventListener('dragover', function(e) {
            e.preventDefault();
            this.classList.add('drag-over');
        });
        
        box.addEventListener('dragleave', function(e) {
            e.preventDefault();
            this.classList.remove('drag-over');
        });
        
        box.addEventListener('drop', function(e) {
            e.preventDefault();
            this.classList.remove('drag-over');
            const files = e.dataTransfer.files;
            if (files.length > 0) {
                this.querySelector('.file-input').files = files;
                this.querySelector('.file-input').dispatchEvent(new Event('change'));
            }
        });
    });
});

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

/**
 * نمایش پیش‌نمایش فایل آپلود شده
 */
function showPreview(box, filePath, fileName) {
    const preview = box.querySelector('.upload-preview');
    const placeholder = box.querySelector('.upload-placeholder');
    
    placeholder.style.display = 'none';
    preview.innerHTML = '';
    preview.style.display = 'block';
    
    // بررسی نوع فایل (تصویر یا PDF)
    if (filePath.match(/\.(jpg|jpeg|png|gif)$/i)) {
        preview.innerHTML = `
            <img src="${filePath}" alt="${fileName}" style="max-width:100%; max-height:150px; border-radius:8px; border:1px solid #e9edf2;">
            <button type="button" class="remove-file btn btn-sm btn-danger" style="position:absolute; top:4px; left:4px; width:28px; height:28px; padding:0; border-radius:50%; font-size:0.8rem;">
                <i class="bi bi-x"></i>
            </button>
        `;
    } else {
        preview.innerHTML = `
            <div style="display:flex; align-items:center; gap:10px; padding:10px; background:#f8fafc; border-radius:8px; border:1px solid #e9edf2;">
                <i class="bi bi-file-pdf" style="font-size:2rem; color:#ef4444;"></i>
                <div style="flex:1; text-align:right;">
                    <strong>${fileName}</strong>
                    <br>
                    <small class="text-muted">فایل PDF</small>
                </div>
                <button type="button" class="remove-file btn btn-sm btn-danger" style="width:28px; height:28px; padding:0; border-radius:50%; font-size:0.8rem;">
                    <i class="bi bi-x"></i>
                </button>
            </div>
        `;
    }
    
    // دکمه حذف
    const removeBtn = preview.querySelector('.remove-file');
    if (removeBtn) {
        removeBtn.addEventListener('click', function(e) {
            e.stopPropagation();
            removeFile(box);
        });
    }
}

/**
 * نمایش وضعیت آپلود
 */
function showUploadStatus(box, message, type) {
    let status = box.querySelector('.upload-status');
    if (!status) {
        status = document.createElement('div');
        status.className = 'upload-status';
        box.appendChild(status);
    }
    
    status.style.cssText = `
        font-size: 0.8rem;
        padding: 4px 12px;
        border-radius: 6px;
        margin-top: 6px;
        text-align: center;
        display: inline-block;
    `;
    
    if (type === 'loading') {
        status.style.background = '#fef3c7';
        status.style.color = '#d97706';
    } else if (type === 'success') {
        status.style.background = '#dcfce7';
        status.style.color = '#16a34a';
    } else if (type === 'error') {
        status.style.background = '#fee2e2';
        status.style.color = '#dc2626';
    }
    
    status.textContent = message;
}

/**
 * حذف فایل آپلود شده
 */
function removeFile(box) {
    const preview = box.querySelector('.upload-preview');
    const placeholder = box.querySelector('.upload-placeholder');
    const fileInput = box.querySelector('.file-input');
    const type = box.dataset.type;
    const hiddenInput = document.querySelector(`input[name="doc_${type}"]`);
    const status = box.querySelector('.upload-status');
    
    preview.innerHTML = '';
    preview.style.display = 'none';
    placeholder.style.display = 'block';
    fileInput.value = '';
    if (hiddenInput) hiddenInput.value = '';
    if (status) status.remove();
    
    // حذف فایل از سرور (با Ajax)
    const formData = new FormData();
    formData.append('doc_type', type);
    formData.append('ajax_action', 'delete_document');
    
    fetch(window.location.href, {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => {
        if (!data.success) {
            console.warn('خطا در حذف فایل:', data.message);
        }
    })
    .catch(function() {
        console.warn('خطا در ارتباط با سرور برای حذف فایل');
    });
}