{% extends "base.html" %}

{% block title %}Vendas de Jornais{% endblock %}

{% block content %}
<div class="row mb-4">
    <div class="col-12">
        <div class="d-flex justify-content-between align-items-center">
            <h1 class="mb-0">
                <i class="fas fa-newspaper me-2"></i>Vendas de Jornais
            </h1>
            <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalNovaVenda">
                <i class="fas fa-plus me-2"></i>Nova Venda
            </button>
        </div>
    </div>
</div>

<div class="card shadow-sm">
    <div class="card-body">
        <div class="row mb-4">
            <div class="col-md-6">
                <div class="input-group">
                    <span class="input-group-text">
                        <i class="fas fa-search"></i>
                    </span>
                    <input type="text" class="form-control" id="searchInput" placeholder="Pesquisar vendas...">
                </div>
            </div>
            <div class="col-md-6 text-end">
                <button id="btnExportar" class="btn btn-outline-primary">
                    <i class="fas fa-download me-2"></i>Exportar
                </button>
            </div>
        </div>

        <div class="table-responsive">
            <table class="table table-hover" id="vendasTable">
                <thead>
                    <tr>
                        <th data-sort="militante">Militante <i class="fas fa-sort"></i></th>
                        <th data-sort="quantidade">Quantidade <i class="fas fa-sort"></i></th>
                        <th data-sort="valor_total">Valor Total <i class="fas fa-sort"></i></th>
                        <th data-sort="data">Data <i class="fas fa-sort"></i></th>
                        <th class="text-end">Ações</th>
                    </tr>
                </thead>
                <tbody>
                    {% for venda in vendas %}
                    <tr>
                        <td data-militante="{{ venda.militante.nome }}">{{ venda.militante.nome }}</td>
                        <td data-quantidade="{{ venda.quantidade }}">{{ venda.quantidade }}</td>
                        <td data-valor_total="{{ venda.valor_total }}">R$ {{ "%.2f"|format(venda.valor_total) }}</td>
                        <td data-data="{{ venda.data_venda }}">{{ venda.data_venda.strftime('%d/%m/%Y') }}</td>
                        <td class="text-end">
                            <div class="btn-group">
                                <button type="button" 
                                       class="btn btn-sm btn-outline-primary"
                                       data-bs-toggle="modal"
                                       data-bs-target="#modalEditarVenda"
                                       data-venda-id="{{ venda.id }}"
                                       data-venda-militante="{{ venda.militante_id }}"
                                       data-venda-quantidade="{{ venda.quantidade }}"
                                       data-venda-valor-total="{{ venda.valor_total }}"
                                       data-venda-data="{{ venda.data_venda.strftime('%Y-%m-%d') }}"
                                       title="Editar">
                                    <i class="fas fa-edit"></i>
                                </button>
                                <button type="button" 
                                        class="btn btn-sm btn-outline-danger"
                                        data-bs-toggle="modal"
                                        data-bs-target="#deleteModal"
                                        data-venda-id="{{ venda.id }}"
                                        data-venda-info="{{ venda.militante.nome }} - {{ venda.quantidade }} jornais"
                                        title="Excluir">
                                    <i class="fas fa-trash"></i>
                                </button>
                            </div>
                        </td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>
    </div>
</div>

<!-- Modal Nova Venda -->
<div class="modal fade" id="modalNovaVenda" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">
                    <i class="fas fa-plus me-2"></i>Nova Venda de Jornal
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <form id="formNovaVenda" method="post" action="{{ url_for('nova_venda_jornal') }}">
                    <div class="mb-3">
                        <label for="militante_id" class="form-label">Militante:</label>
                        <select class="form-select" id="militante_id" name="militante_id" required>
                            <option value="">Selecione um militante</option>
                            {% for militante in militantes %}
                            <option value="{{ militante.id }}">{{ militante.nome }}</option>
                            {% endfor %}
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="quantidade" class="form-label">Quantidade:</label>
                        <input type="number" class="form-control" id="quantidade" name="quantidade" required>
                    </div>
                    <div class="mb-3">
                        <label for="valor_total" class="form-label">Valor Total:</label>
                        <input type="number" step="0.01" class="form-control" id="valor_total" name="valor_total" required>
                    </div>
                    <div class="mb-3">
                        <label for="data_venda" class="form-label">Data da Venda:</label>
                        <input type="date" class="form-control" id="data_venda" name="data_venda" required>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                <button type="submit" form="formNovaVenda" class="btn btn-success">
                    <i class="fas fa-save me-2"></i>Salvar
                </button>
            </div>
        </div>
    </div>
</div>

<!-- Modal de Edição -->
<div class="modal fade" id="modalEditarVenda" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">
                    <i class="fas fa-edit me-2"></i>Editar Venda de Jornal
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <form id="formEditarVenda" method="post">
                    <div class="mb-3">
                        <label for="editMilitante" class="form-label">Militante:</label>
                        <select class="form-select" id="editMilitante" name="militante_id" required>
                            <option value="">Selecione um militante</option>
                            {% for militante in militantes %}
                            <option value="{{ militante.id }}">{{ militante.nome }}</option>
                            {% endfor %}
                        </select>
                    </div>
                    <div class="mb-3">
                        <label for="editQuantidade" class="form-label">Quantidade:</label>
                        <input type="number" class="form-control" id="editQuantidade" name="quantidade" required>
                    </div>
                    <div class="mb-3">
                        <label for="editValorTotal" class="form-label">Valor Total:</label>
                        <input type="number" step="0.01" class="form-control" id="editValorTotal" name="valor_total" required>
                    </div>
                    <div class="mb-3">
                        <label for="editData" class="form-label">Data da Venda:</label>
                        <input type="date" class="form-control" id="editData" name="data_venda" required>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                <button type="submit" form="formEditarVenda" class="btn btn-success">
                    <i class="fas fa-save me-2"></i>Salvar
                </button>
            </div>
        </div>
    </div>
</div>

<!-- Modal de Exclusão -->
<div class="modal fade" id="deleteModal" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Confirmar Exclusão</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Tem certeza que deseja excluir a venda de <strong id="vendaInfo"></strong>?</p>
                <p class="text-danger mb-0">Esta ação não pode ser desfeita.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                <form action="" method="POST" id="deleteForm" class="d-inline">
                    <button type="submit" class="btn btn-danger">
                        <i class="fas fa-trash me-2"></i>Excluir
                    </button>
                </form>
            </div>
        </div>
    </div>
</div>
{% endblock %}

{% block extra_js %}
<script>
document.addEventListener('DOMContentLoaded', function() {
    // Configuração do modal de exclusão
    const deleteModal = document.getElementById('deleteModal');
    deleteModal.addEventListener('show.bs.modal', function(event) {
        const button = event.relatedTarget;
        const vendaId = button.getAttribute('data-venda-id');
        const vendaInfo = button.getAttribute('data-venda-info');
        
        document.getElementById('vendaInfo').textContent = vendaInfo;
        document.getElementById('deleteForm').action = `/jornais/excluir/${vendaId}`;
    });

    // Envio do formulário de nova venda via AJAX
    const formNovaVenda = document.getElementById('formNovaVenda');
    formNovaVenda.addEventListener('submit', function(e) {
        e.preventDefault();
        
        const formData = new FormData(this);
        
        fetch(this.action, {
            method: 'POST',
            body: formData,
            headers: {
                'X-Requested-With': 'XMLHttpRequest'
            }
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'success') {
                // Fechar o modal
                bootstrap.Modal.getInstance(document.getElementById('modalNovaVenda')).hide();
                
                // Atualizar a lista
                location.reload();
                
                // Mostrar mensagem de sucesso
                const alertDiv = document.createElement('div');
                alertDiv.className = 'alert alert-success alert-dismissible fade show';
                alertDiv.innerHTML = `
                    ${data.message}
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                `;
                document.querySelector('.container').insertBefore(alertDiv, document.querySelector('.container').firstChild);
            } else {
                // Mostrar erro
                const alertDiv = document.createElement('div');
                alertDiv.className = 'alert alert-danger alert-dismissible fade show';
                alertDiv.innerHTML = `
                    ${data.message}
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                `;
                document.querySelector('.modal-body').insertBefore(alertDiv, formNovaVenda);
            }
        })
        .catch(error => {
            console.error('Erro:', error);
            const alertDiv = document.createElement('div');
            alertDiv.className = 'alert alert-danger alert-dismissible fade show';
            alertDiv.innerHTML = `
                Erro ao cadastrar venda. Tente novamente.
                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
            `;
            document.querySelector('.modal-body').insertBefore(alertDiv, formNovaVenda);
        });
    });

    // Configuração do modal de edição
    const modalEditarVenda = document.getElementById('modalEditarVenda');
    modalEditarVenda.addEventListener('show.bs.modal', function(event) {
        const button = event.relatedTarget;
        const vendaId = button.getAttribute('data-venda-id');
        
        // Preencher o formulário com os dados da venda
        document.getElementById('editMilitante').value = button.getAttribute('data-venda-militante');
        document.getElementById('editQuantidade').value = button.getAttribute('data-venda-quantidade');
        document.getElementById('editValorTotal').value = button.getAttribute('data-venda-valor-total');
        document.getElementById('editData').value = button.getAttribute('data-venda-data');
        
        // Configurar a action do formulário
        document.getElementById('formEditarVenda').action = `/jornais/editar/${vendaId}`;
    });

    // Envio do formulário de edição via AJAX
    const formEditarVenda = document.getElementById('formEditarVenda');
    formEditarVenda.addEventListener('submit', function(e) {
        e.preventDefault();
        
        const formData = new FormData(this);
        
        fetch(this.action, {
            method: 'POST',
            body: formData,
            headers: {
                'X-Requested-With': 'XMLHttpRequest'
            }
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'success') {
                // Fechar o modal
                bootstrap.Modal.getInstance(modalEditarVenda).hide();
                
                // Atualizar a lista
                location.reload();
                
                // Mostrar mensagem de sucesso
                const alertDiv = document.createElement('div');
                alertDiv.className = 'alert alert-success alert-dismissible fade show';
                alertDiv.innerHTML = `
                    ${data.message}
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                `;
                document.querySelector('.container').insertBefore(alertDiv, document.querySelector('.container').firstChild);
            } else {
                // Mostrar erro
                const alertDiv = document.createElement('div');
                alertDiv.className = 'alert alert-danger alert-dismissible fade show';
                alertDiv.innerHTML = `
                    ${data.message}
                    <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                `;
                document.querySelector('.modal-body').insertBefore(alertDiv, formEditarVenda);
            }
        })
        .catch(error => {
            console.error('Erro:', error);
            const alertDiv = document.createElement('div');
            alertDiv.className = 'alert alert-danger alert-dismissible fade show';
            alertDiv.innerHTML = `
                Erro ao atualizar venda. Tente novamente.
                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
            `;
            document.querySelector('.modal-body').insertBefore(alertDiv, formEditarVenda);
        });
    });

    // Limpar alertas quando os modais forem fechados
    [modalEditarVenda, document.getElementById('modalNovaVenda')].forEach(modal => {
        modal.addEventListener('hidden.bs.modal', function () {
            const alerts = this.querySelectorAll('.alert');
            alerts.forEach(alert => alert.remove());
        });
    });

    // Pesquisa em tempo real
    const searchInput = document.getElementById('searchInput');
    searchInput.addEventListener('input', function() {
        const searchTerm = this.value.toLowerCase();
        const rows = document.querySelectorAll('#vendasTable tbody tr');
        
        rows.forEach(row => {
            const text = row.textContent.toLowerCase();
            row.style.display = text.includes(searchTerm) ? '' : 'none';
        });
    });

    // Ordenação
    const headers = document.querySelectorAll('#vendasTable th[data-sort]');
    headers.forEach(header => {
        header.addEventListener('click', function() {
            const column = this.getAttribute('data-sort');
            const tbody = document.querySelector('#vendasTable tbody');
            const rows = Array.from(tbody.querySelectorAll('tr'));
            const isAsc = !this.classList.contains('sort-asc');
            
            // Remover classes de ordenação de todos os headers
            headers.forEach(h => {
                h.classList.remove('sort-asc', 'sort-desc');
                h.querySelector('i').className = 'fas fa-sort';
            });
            
            // Adicionar classe de ordenação ao header clicado
            this.classList.add(isAsc ? 'sort-asc' : 'sort-desc');
            this.querySelector('i').className = `fas fa-sort-${isAsc ? 'up' : 'down'}`;
            
            // Ordenar linhas
            rows.sort((a, b) => {
                const aVal = a.querySelector(`td[data-${column}]`).getAttribute(`data-${column}`);
                const bVal = b.querySelector(`td[data-${column}]`).getAttribute(`data-${column}`);
                return isAsc ? aVal.localeCompare(bVal) : bVal.localeCompare(aVal);
            });
            
            // Reposicionar linhas
            rows.forEach(row => tbody.appendChild(row));
        });
    });

    // Exportar para CSV
    document.getElementById('btnExportar').addEventListener('click', function() {
        const rows = document.querySelectorAll('#vendasTable tbody tr:not([style*="display: none"])');
        const headers = ['Militante', 'Quantidade', 'Valor Total', 'Data'];
        let csv = headers.join(',') + '\n';
        
        rows.forEach(row => {
            const cols = row.querySelectorAll('td');
            const values = [
                cols[0].textContent,
                cols[1].textContent,
                cols[2].textContent,
                cols[3].textContent
            ].map(val => `"${val}"`);
            csv += values.join(',') + '\n';
        });
        
        const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
        const link = document.createElement('a');
        link.href = URL.createObjectURL(blob);
        link.setAttribute('download', 'vendas_jornal.csv');
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    });
});
</script>
{% endblock %}

{% block extra_css %}
<style>
/* Estilo para colunas ordenáveis */
th[data-sort] {
    cursor: pointer;
    user-select: none;
}

th[data-sort] i {
    margin-left: 5px;
    color: #ccc;
}

th[data-sort].sort-asc i,
th[data-sort].sort-desc i {
    color: var(--primary-color);
}

/* Animação para linhas da tabela */
#vendasTable tbody tr {
    transition: all 0.3s ease;
}

#vendasTable tbody tr:hover {
    background-color: rgba(0,0,0,0.02);
    transform: translateX(5px);
}

/* Estilo para botões de ação */
.btn-group .btn {
    padding: 0.25rem 0.5rem;
}

.btn-group .btn i {
    width: 16px;
    text-align: center;
}

/* Responsividade */
@media (max-width: 768px) {
    .btn-group {
        display: flex;
        margin-top: 1rem;
    }
    
    .btn-group .btn {
        flex: 1;
    }
}

/* Estilo para o backdrop com blur em todos os modais */
.modal-backdrop.show {
    backdrop-filter: blur(8px);
    background-color: rgba(0, 0, 0, 0.7);
}

/* Estilo para o botão de fechar dos modais */
.btn-close {
    background-color: transparent;
    padding: 0.5rem;
    opacity: 0.8;
    transition: opacity 0.2s;
    filter: invert(1) grayscale(100%) brightness(200%);
}

.btn-close:hover {
    opacity: 1;
    background-color: transparent;
}

/* Estilo para modais */
.modal-content {
    border: none;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}

.modal-header {
    background: linear-gradient(to right, var(--bs-gray-dark), var(--bs-gray));
    color: white;
    border-radius: 12px 12px 0 0;
    border-bottom: none;
    padding: 1rem;
}

.modal-body {
    padding: 1.5rem;
}

.modal-footer {
    border-top: 1px solid #eee;
    padding: 1rem;
}
</style>
{% endblock %}
