<?php
include 'verifica_login.php';
include 'conexao.php';
include 'config/base_utils.php';
include 'config/cliente_projeto_utils.php';
include 'config/departamento_modelo_utils.php';
include 'config/faixa_funcionario_modelo_utils.php';
include 'config/classificacao_lead_modelo_utils.php';
include 'config/contato_status_modelo_utils.php';
$conn = conectar_banco();
garantir_estrutura_bases($conn);
garantir_estrutura_clientes_projetos($conn);
garantir_modelo_departamento_padrao($conn);
garantir_modelo_faixa_funcionario_padrao($conn);
garantir_modelo_classificacao_lead_padrao($conn);
garantir_modelo_contato_status_padrao($conn);

// Buscar projetos ativos
$projetos = listar_projetos($conn, true);

// Buscar bases ativas
$bases = listar_bases($conn, true);

// Buscar modelos de departamentos ativos
$modelos_departamentos = listar_modelos_departamentos($conn, true);

// Buscar modelos de faixas de funcionários ativos
$modelos_faixa_funcionarios = listar_modelos_faixa_funcionarios($conn, true);

// Buscar modelos de classificação de leads ativos
$modelos_classificacao = listar_modelos_classificacao_leads($conn, true);

// Buscar modelos de status do contato ativos
$modelos_contato_status = listar_modelos_contato_status($conn, true);
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nova Pesquisa</title>
    <style>
        body { font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 20px; }
        .container { max-width: 800px; margin: 0 auto; background: white; padding: 30px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); }
        h1 { color: #004d99; border-bottom: 2px solid #ccc; padding-bottom: 10px; }
        
        .alert { padding: 15px; margin: 20px 0; border-radius: 6px; }
        .alert-success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .alert-error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
        
        .form-group { margin-bottom: 20px; }
        .form-group label { display: block; font-weight: bold; margin-bottom: 5px; color: #555; }
        .form-group input[type="text"],
        .form-group input[type="date"],
        .form-group select,
        .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; font-size: 1em; }
        .form-group textarea { min-height: 100px; resize: vertical; }
        
        .form-row { display: flex; gap: 20px; }
        .form-row .form-group { flex: 1; }
        
        .btn { background-color: #004d99; color: white; padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; font-size: 1em; margin-top: 10px; }
        .btn:hover { background-color: #003366; }
        .btn-secondary { background-color: #6c757d; }
        .btn-secondary:hover { background-color: #5a6268; }
        
        .info-box { background: #e3f2fd; padding: 15px; border-radius: 6px; margin-bottom: 20px; border-left: 4px solid #004d99; }
        .info-box strong { color: #004d99; }
        
        .button-group { display: flex; gap: 10px; justify-content: flex-end; }

        .progress-container { margin-top: 20px; padding: 15px; border: 1px solid #e0e0e0; border-radius: 6px; background: #f8f9fa; }
        .progress-bar { width: 100%; height: 16px; background: #e0e0e0; border-radius: 8px; overflow: hidden; }
        .progress-fill { height: 100%; width: 0%; background: linear-gradient(90deg, #2e7d32, #43a047); transition: width 0.2s ease; }
        .progress-text { margin-top: 8px; color: #555; font-size: 0.9em; }
        .progress-error { color: #c62828; margin-top: 10px; }
        .readonly-field { background-color: #f3f6fa; color: #2d3e50; }
    </style>
</head>
<body>

<div class="container">
    <h1>📋 Nova Pesquisa</h1>
    
    <?php
    if (isset($_GET['msg']) && $_GET['msg'] === 'error') {
        $detalhe = $_GET['detalhe'] ?? 'Erro desconhecido';
        echo '<div class="alert alert-error">' . htmlspecialchars($detalhe) . '</div>';
    }
    ?>
    
    <div class="info-box">
        <strong>ℹ️ Informação:</strong> A pesquisa será criada para todas as empresas cadastradas no sistema. Cada empresa receberá um questionário com as perguntas do template selecionado.
    </div>
    
    <form method="POST" action="processar_nova_pesquisa.php" id="form-nova-pesquisa">
        <div class="form-group">
            <label for="nome">Nome da Pesquisa *</label>
            <input type="text" id="nome" name="nome" required maxlength="255" placeholder="Ex: Pesquisa de Satisfação 2024" autofocus>
            <small style="color: #666;">Um nome descritivo para identificar a pesquisa</small>
        </div>
        
        <div class="form-row">
            <div class="form-group">
                <label for="data_pesquisa">Data da Pesquisa *</label>
                <input type="date" id="data_pesquisa" name="data_pesquisa" required value="<?= date('Y-m-d') ?>">
                <small style="color: #666;">Data em que a pesquisa será realizada</small>
            </div>
            
            <div class="form-group">
                <label for="status">Status *</label>
                <select id="status" name="status" required>
                    <option value="ativa" selected>Ativa</option>
                    <option value="encerrada">Encerrada</option>
                </select>
                <small style="color: #666;">Ativa para aceitar respostas, Encerrada para visualizar resultados</small>
            </div>
        </div>
        
        <div class="form-group">
            <label for="id_projeto">Projeto *</label>
            <select id="id_projeto" name="id_projeto" required>
                <option value="">Selecione um projeto...</option>
                <?php foreach ($projetos as $projeto): ?>
                <option
                    value="<?= (int)$projeto['id_projeto'] ?>"
                    data-cliente="<?= htmlspecialchars($projeto['nome_cliente'], ENT_QUOTES, 'UTF-8') ?>"
                >
                    <?= htmlspecialchars($projeto['nome_projeto']) ?> — <?= htmlspecialchars($projeto['nome_cliente']) ?>
                </option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">Selecione o projeto que será associado à pesquisa</small>
        </div>

        <div class="form-group">
            <label for="nome_cliente_projeto">Cliente do Projeto</label>
            <input type="text" id="nome_cliente_projeto" class="readonly-field" readonly placeholder="Selecione um projeto para visualizar o cliente relacionado">
            <small style="color: #666;">Este cliente e definido automaticamente com base no projeto selecionado.</small>
        </div>

        <div class="form-group">
            <label for="id_questionario_template">Questionário do Projeto *</label>
            <select id="id_questionario_template" name="id_questionario_template" required>
                <option value="">Selecione um questionário...</option>
            </select>
            <small style="color: #666;">A lista é carregada conforme o projeto selecionado</small>
        </div>

        <div class="form-group">
            <label for="idbase">Base de Empresas *</label>
            <select id="idbase" name="idbase" required>
                <option value="">Selecione a base...</option>
                <?php foreach ($bases as $base): ?>
                <option value="<?= (int)$base['idbase'] ?>"><?= htmlspecialchars($base['nome_base']) ?></option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">Somente empresas desta base serão incluídas na pesquisa</small>
        </div>

        <div class="form-group">
            <label for="id_modelo_departamento">Modelo de Departamentos *</label>
            <select id="id_modelo_departamento" name="id_modelo_departamento" required>
                <option value="">Selecione o modelo...</option>
                <?php foreach ($modelos_departamentos as $modelo): ?>
                <option value="<?= (int)$modelo['id_modelo'] ?>"><?= htmlspecialchars($modelo['nome_modelo']) ?></option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">Os campos de departamento do questionário/contatos seguirão este modelo.</small>
        </div>

        <div class="form-group">
            <label for="id_modelo_faixa_funcionario">Modelo de Faixas de Funcionários *</label>
            <select id="id_modelo_faixa_funcionario" name="id_modelo_faixa_funcionario" required>
                <option value="">Selecione o modelo...</option>
                <?php foreach ($modelos_faixa_funcionarios as $modelo): ?>
                <option value="<?= (int)$modelo['id_modelo'] ?>"><?= htmlspecialchars($modelo['nome_modelo']) ?></option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">Os campos/filtros de faixa de funcionários da pesquisa seguirão este modelo.</small>
        </div>

        <div class="form-group">
            <label for="id_modelo_classificacao">Modelo de Classificação de Leads *</label>
            <select id="id_modelo_classificacao" name="id_modelo_classificacao" required>
                <option value="">Selecione o modelo...</option>
                <?php foreach ($modelos_classificacao as $modelo): ?>
                <option value="<?= (int)$modelo['id_modelo'] ?>"><?= htmlspecialchars($modelo['nome_modelo']) ?></option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">As classificações por nota desta pesquisa seguirão este modelo.</small>
        </div>

        <div class="form-group">
            <label for="id_modelo_contato_status">Modelo de Status do Contato *</label>
            <select id="id_modelo_contato_status" name="id_modelo_contato_status" required>
                <option value="">Selecione o modelo...</option>
                <?php foreach ($modelos_contato_status as $modelo): ?>
                <option value="<?= (int)$modelo['id_modelo'] ?>"><?= htmlspecialchars($modelo['nome_modelo']) ?></option>
                <?php endforeach; ?>
            </select>
            <small style="color: #666;">Os status dos contatos desta pesquisa seguirão este modelo.</small>
        </div>
        
        <div class="form-group">
            <label for="descricao">Descrição (Opcional)</label>
            <textarea id="descricao" name="descricao" placeholder="Adicione detalhes sobre a pesquisa, contexto, etc."></textarea>
            <small style="color: #666;">Uma descrição para ajudar na identificação e contexto da pesquisa</small>
        </div>
        
        <div class="button-group">
            <a href="montagem_questionario.php" class="btn btn-secondary">← Voltar</a>
            <button type="submit" class="btn" id="btn-criar">✅ Criar Pesquisa</button>
        </div>
    </form>

    <div class="progress-container" id="progress-container" style="display:none;">
        <div class="progress-bar"><div class="progress-fill" id="progress-fill"></div></div>
        <div class="progress-text">Inseridos: <strong><span id="progress-inserted">0</span></strong> / <strong><span id="progress-total">0</span></strong></div>
        <div class="progress-error" id="progress-error" style="display:none;"></div>
    </div>
</div>

<script>
    const formPesquisa = document.getElementById('form-nova-pesquisa');
    const selectProjeto = document.getElementById('id_projeto');
    const inputClienteProjeto = document.getElementById('nome_cliente_projeto');
    const selectQuestionario = document.getElementById('id_questionario_template');
    const progressContainer = document.getElementById('progress-container');
    const progressFill = document.getElementById('progress-fill');
    const progressInserted = document.getElementById('progress-inserted');
    const progressTotal = document.getElementById('progress-total');
    const progressError = document.getElementById('progress-error');
    const btnCriar = document.getElementById('btn-criar');

    async function iniciarProgresso(formData) {
        const initRes = await fetch('processar_nova_pesquisa.php?action=init', {
            method: 'POST',
            body: formData
        });
        return initRes.json();
    }

    async function processarPasso() {
        const stepRes = await fetch('processar_nova_pesquisa.php?action=step', {
            method: 'POST'
        });
        return stepRes.json();
    }

    function atualizarBarra(processed, total) {
        const pct = total > 0 ? Math.round((processed / total) * 100) : 0;
        progressFill.style.width = pct + '%';
        progressInserted.textContent = processed;
        progressTotal.textContent = total;
    }

    async function carregarQuestionariosPorProjeto(idProjeto) {
        selectQuestionario.innerHTML = '<option value="">Carregando...</option>';

        if (!idProjeto) {
            selectQuestionario.innerHTML = '<option value="">Selecione um questionário...</option>';
            return;
        }

        try {
            const resp = await fetch('processar_nova_pesquisa.php?action=list_questionarios&id_projeto=' + encodeURIComponent(idProjeto));
            const data = await resp.json();

            if (!data.success) {
                selectQuestionario.innerHTML = '<option value="">Nenhum questionário disponível</option>';
                return;
            }

            selectQuestionario.innerHTML = '<option value="">Selecione um questionário...</option>';
            data.questionarios.forEach((q) => {
                const opt = document.createElement('option');
                opt.value = q.id;
                opt.textContent = q.nome;
                selectQuestionario.appendChild(opt);
            });
        } catch (e) {
            selectQuestionario.innerHTML = '<option value="">Erro ao carregar questionários</option>';
        }
    }

    function atualizarClienteProjeto() {
        const selectedOption = selectProjeto.options[selectProjeto.selectedIndex];
        const nomeCliente = selectedOption ? (selectedOption.dataset.cliente || '') : '';
        inputClienteProjeto.value = nomeCliente;
    }

    selectProjeto.addEventListener('change', () => {
        atualizarClienteProjeto();
        carregarQuestionariosPorProjeto(selectProjeto.value);
    });

    atualizarClienteProjeto();

    formPesquisa.addEventListener('submit', async (e) => {
        e.preventDefault();
        progressError.style.display = 'none';
        progressError.textContent = '';
        progressContainer.style.display = 'block';
        btnCriar.disabled = true;

        try {
            const formData = new FormData(formPesquisa);
            const initData = await iniciarProgresso(formData);

            if (!initData.success) {
                progressError.textContent = initData.message || 'Erro ao iniciar a pesquisa.';
                progressError.style.display = 'block';
                btnCriar.disabled = false;
                return;
            }

            atualizarBarra(initData.processed, initData.total);

            while (true) {
                const stepData = await processarPasso();

                if (!stepData.success) {
                    progressError.textContent = stepData.message || 'Erro durante o processamento.';
                    progressError.style.display = 'block';
                    btnCriar.disabled = false;
                    return;
                }

                atualizarBarra(stepData.processed, stepData.total);

                if (stepData.done) {
                    if (stepData.redirect) {
                        window.location.href = stepData.redirect;
                    }
                    break;
                }
            }
        } catch (err) {
            progressError.textContent = 'Erro inesperado ao criar a pesquisa.';
            progressError.style.display = 'block';
            btnCriar.disabled = false;
        }
    });
</script>

</body>
</html>
