{% extends 'mainapp/base.html' %}
{% load static %}

{% block title %}Импорт заявок из Excel{% endblock %}

{% block content %}
<div class="container-fluid mt-3">
    <div class="row">
        <div class="col-md-8 offset-md-2">
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0"><i class="bi bi-file-earmark-excel"></i> Импорт заявок из Excel</h5>
                </div>
                <div class="card-body">
                    <form id="importForm" enctype="multipart/form-data">
                        {% csrf_token %}
                        <div class="mb-3">
                            <label for="file" class="form-label">Выберите Excel файл (.xlsx)</label>
                            <input type="file" class="form-control" id="file" name="file" accept=".xlsx,.xls" required>
                        </div>
                        
                        <div class="alert alert-info">
                            <h6>Ожидаемые столбцы в файле:</h6>
                            <ul class="mb-0 small">
                                <li><strong>Дата постановки задачи</strong> → Дата заявки</li>
                                <li><strong>Спутник</strong> → Спутник (ищется по NORAD в скобках, например "NSS 12 (36032)")</li>
                                <li><strong>Дата формирования карточки</strong> → Дата формирования карточки</li>
                                <li><strong>Дата проведения</strong> → Дата и время планирования</li>
                                <li><strong>Частота Downlink</strong> → Частота Downlink</li>
                                <li><strong>Частота Uplink</strong> → Частота Uplink</li>
                                <li><strong>Перенос</strong> → Перенос</li>
                                <li><strong>Координаты ГСО</strong> → Координаты ГСО (формат: "широта. долгота")</li>
                                <li><strong>Район</strong> → Район</li>
                                <li><strong>Результат ГСО</strong> → Если "Успешно", то ГСО успешно = Да, иначе Нет + в комментарий</li>
                                <li><strong>Результат кубсата</strong> → <span class="text-danger">Красная ячейка</span> = Кубсат неуспешно, иначе успешно. Значение добавляется в комментарий</li>
                                <li><strong>Координаты источника</strong> → Координаты источника</li>
                                <li><strong>Координаты объекта</strong> → Координаты объекта (формат: "26.223, 33.969" или пусто)</li>
                            </ul>
                            <hr>
                            <h6>Проверка дубликатов:</h6>
                            <p class="mb-0 small">Строки пропускаются, если уже существует заявка с такой же комбинацией: спутник + downlink + uplink + перенос + координаты ГСО + дата проведения</p>
                            <hr>
                            <h6>Логика определения статуса:</h6>
                            <ul class="mb-0 small">
                                <li>Если есть <strong>координаты источника</strong> → статус "Результат получен"</li>
                                <li>Если нет координат источника, но <strong>ГСО успешно</strong> → статус "Успешно"</li>
                                <li>Если нет координат источника и <strong>ГСО неуспешно</strong> → статус "Неуспешно"</li>
                                <li>Иначе → статус "Запланировано"</li>
                            </ul>
                        </div>
                        
                        <button type="submit" class="btn btn-primary" id="submitBtn">
                            <i class="bi bi-upload"></i> Загрузить
                        </button>
                        <a href="{% url 'mainapp:kubsat' %}" class="btn btn-secondary">
                            <i class="bi bi-arrow-left"></i> Назад
                        </a>
                    </form>
                    
                    <!-- Результаты импорта -->
                    <div id="results" class="mt-4" style="display: none;">
                        <h6>Результаты импорта:</h6>
                        <div id="resultsContent"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.getElementById('importForm').addEventListener('submit', async function(e) {
    e.preventDefault();
    
    const submitBtn = document.getElementById('submitBtn');
    const resultsDiv = document.getElementById('results');
    const resultsContent = document.getElementById('resultsContent');
    
    submitBtn.disabled = true;
    submitBtn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> Загрузка...';
    resultsDiv.style.display = 'none';
    
    const formData = new FormData(this);
    
    try {
        const response = await fetch('{% url "mainapp:source_request_import" %}', {
            method: 'POST',
            body: formData,
            headers: {
                'X-Requested-With': 'XMLHttpRequest'
            }
        });
        
        const data = await response.json();
        
        resultsDiv.style.display = 'block';
        
        if (data.success) {
            let html = `
                <div class="alert alert-success">
                    <strong>Успешно!</strong> Создано заявок: ${data.created}
                    ${data.skipped > 0 ? `, пропущено: ${data.skipped}` : ''}
                </div>
            `;
            
            if (data.headers && data.headers.length > 0) {
                html += `
                    <div class="alert alert-secondary">
                        <strong>Найденные заголовки:</strong> ${data.headers.join(', ')}
                    </div>
                `;
            }
            
            if (data.skipped_rows && data.skipped_rows.length > 0) {
                html += `
                    <div class="alert alert-info">
                        <strong>Пропущенные строки (дубликаты):</strong>
                        <ul class="mb-0 small">
                            ${data.skipped_rows.map(e => `<li>${e}</li>`).join('')}
                        </ul>
                        ${data.skipped > 20 ? '<p class="mb-0 mt-2"><em>Показаны первые 20 пропущенных</em></p>' : ''}
                    </div>
                `;
            }
            
            if (data.errors && data.errors.length > 0) {
                html += `
                    <div class="alert alert-warning">
                        <strong>Ошибки (${data.total_errors}):</strong>
                        <ul class="mb-0 small">
                            ${data.errors.map(e => `<li>${e}</li>`).join('')}
                        </ul>
                        ${data.total_errors > 20 ? '<p class="mb-0 mt-2"><em>Показаны первые 20 ошибок</em></p>' : ''}
                    </div>
                `;
            }
            
            resultsContent.innerHTML = html;
        } else {
            resultsContent.innerHTML = `
                <div class="alert alert-danger">
                    <strong>Ошибка:</strong> ${data.error}
                </div>
            `;
        }
    } catch (error) {
        resultsDiv.style.display = 'block';
        resultsContent.innerHTML = `
            <div class="alert alert-danger">
                <strong>Ошибка:</strong> ${error.message}
            </div>
        `;
    } finally {
        submitBtn.disabled = false;
        submitBtn.innerHTML = '<i class="bi bi-upload"></i> Загрузить';
    }
});
</script>
{% endblock %}
