<?php
include 'verifica_login.php';
include 'conexao.php';
include 'config/cliente_projeto_utils.php';
include 'config/base_utils.php';
$conn = conectar_banco();
garantir_estrutura_clientes_projetos($conn);
garantir_estrutura_bases($conn);

$filtro_projeto = (int)($_GET['filtro_projeto'] ?? 0);
$projetos_filtro = listar_projetos($conn, false);

$usuario_nivel_normalizado = strtolower(trim((string)($_SESSION['usuario_nivel'] ?? '')));
$pode_editar_desativar = ($usuario_nivel_normalizado === 'administrador');

// Editar pesquisa (nome e ativação/desativação) - somente administrador
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'editar_pesquisa') {
    if (!$pode_editar_desativar) {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('Somente administradores podem editar e alterar status de pesquisas.'));
        exit;
    }

    $id_pesquisa = isset($_POST['id_pesquisa']) ? (int)$_POST['id_pesquisa'] : 0;
    $novo_nome = trim($_POST['novo_nome'] ?? '');
    $desativar = isset($_POST['desativar']) && $_POST['desativar'] === '1';

    if ($id_pesquisa <= 0) {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('ID da pesquisa inválido.'));
        exit;
    }

    if ($novo_nome === '') {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('O nome da pesquisa não pode ficar vazio.'));
        exit;
    }

    if (mb_strlen($novo_nome) > 255) {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('O nome da pesquisa deve ter no máximo 255 caracteres.'));
        exit;
    }

    $stmt_atual = $conn->prepare("SELECT status FROM pesquisas WHERE id = ? LIMIT 1");
    $stmt_atual->bind_param('i', $id_pesquisa);
    $stmt_atual->execute();
    $pesquisa_atual = $stmt_atual->get_result()->fetch_assoc();

    if (!$pesquisa_atual) {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('Pesquisa não encontrada.'));
        exit;
    }

    $status_atual = $pesquisa_atual['status'] ?? 'ativa';
    $novo_status = $desativar ? 'inativa' : $status_atual;

    $stmt_update = $conn->prepare("UPDATE pesquisas SET nome = ?, status = ? WHERE id = ?");
    $stmt_update->bind_param('ssi', $novo_nome, $novo_status, $id_pesquisa);

    if ($stmt_update->execute()) {
        if ($stmt_update->affected_rows > 0 || $desativar) {
            $msg_sucesso = $desativar
                ? 'Pesquisa atualizada e desativada com sucesso.'
                : 'Nome da pesquisa atualizado com sucesso.';
            header('Location: pesquisas.php?msg=success&detalhe=' . urlencode($msg_sucesso));
        } else {
            header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('Pesquisa não encontrada ou nome inalterado.'));
        }
    } else {
        header('Location: pesquisas.php?msg=error&detalhe=' . urlencode('Erro ao atualizar o nome da pesquisa.'));
    }
    exit;
}

// Buscar resumo de pesquisas por status
$stmt_resumo = $conn->prepare("
    SELECT 
        status,
        COUNT(*) as total
    FROM pesquisas
    GROUP BY status
");
$stmt_resumo->execute();
$resumo_status = $stmt_resumo->get_result();

$total_ativas = 0;
$total_inativas = 0;
$total_geral = 0;

while ($row = $resumo_status->fetch_assoc()) {
    if ($row['status'] === 'ativa') {
        $total_ativas = (int)$row['total'];
    } else {
        $total_inativas = (int)$row['total'];
    }
    $total_geral += (int)$row['total'];
}
$percentual_ativas = $total_geral > 0 ? ($total_ativas / $total_geral) * 100 : 0;

// Buscar todas as pesquisas
$sqlPesquisas = "
    SELECT 
        p.*,
        qt.nome as nome_questionario,
        pr.nome_projeto,
        c.nome_cliente,
        b.nome_base,
        COUNT(DISTINCT pe.id) as total_empresas
    FROM pesquisas p
    LEFT JOIN questionario_template qt ON p.id_questionario_template_fk = qt.id
    LEFT JOIN projetos pr ON pr.id_projeto = p.id_projeto_fk
    LEFT JOIN clientes_bms c ON c.id_cliente = pr.id_cliente_fk
    LEFT JOIN bases b ON b.idbase = p.idbase_fk
    LEFT JOIN pesquisa_empresa pe ON p.id = pe.id_pesquisa_fk
";

if ($filtro_projeto > 0) {
    $sqlPesquisas .= " WHERE p.id_projeto_fk = ?";
}

$sqlPesquisas .= " GROUP BY p.id ORDER BY p.data_criacao DESC";

$stmt = $conn->prepare($sqlPesquisas);
if ($filtro_projeto > 0) {
    $stmt->bind_param('i', $filtro_projeto);
}
$stmt->execute();
$pesquisas = $stmt->get_result();
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pesquisas</title>
    <style>
        body { font-family: Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 20px; }
        .container { max-width: 1200px; 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; }
        
        .btn { background-color: #004d99; color: white; padding: 12px 25px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; font-size: 0.95em; }
        .btn:hover { background-color: #003366; }
        .btn-secondary { background-color: #6c757d; }
        .btn-secondary:hover { background-color: #5a6268; }
        
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
        th { background: #004d99; color: white; font-weight: bold; }
        tr:hover { background: #f5f5f5; }
        
        .badge { padding: 5px 10px; border-radius: 20px; font-size: 0.85em; font-weight: bold; }
        .badge-ativa { background: #c8e6c9; color: #1b5e20; }
        .badge-inativa { background: #ffccbc; color: #bf360c; }
        
        .empty-state { text-align: center; padding: 60px 20px; color: #999; }
        .empty-state-icon { font-size: 64px; margin-bottom: 20px; }

        .alert { padding: 12px 15px; margin: 15px 0; border-radius: 6px; }
        .alert-success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        .alert-error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }

        .btn-mini {
            background: #2e7d32;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 7px 10px;
            cursor: pointer;
            font-size: 0.8em;
            font-weight: bold;
            white-space: nowrap;
        }

        .btn-mini:hover { background: #1b5e20; }

        .btn-edit {
            background: #f57c00;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 6px 10px;
            cursor: pointer;
            font-size: 0.85em;
            font-weight: bold;
            margin-left: 6px;
        }

        .btn-edit:hover { background: #ef6c00; }

        .btn-delete {
            background: #c62828;
            color: white;
            border: none;
            border-radius: 4px;
            padding: 6px 10px;
            cursor: pointer;
            font-size: 0.85em;
            font-weight: bold;
            margin-left: 6px;
        }

        .btn-delete:hover { background: #b71c1c; }

        .modal-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.55);
            z-index: 999;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }

        .modal {
            width: 100%;
            max-width: 560px;
            background: #fff;
            border-radius: 10px;
            box-shadow: 0 10px 35px rgba(0,0,0,0.25);
            overflow: hidden;
        }

        .modal-header {
            background: #004d99;
            color: #fff;
            padding: 14px 18px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .modal-close {
            background: transparent;
            color: #fff;
            border: none;
            font-size: 1.2em;
            cursor: pointer;
        }

        .modal-body { padding: 18px; }
        .modal-footer {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            padding: 14px 18px;
            border-top: 1px solid #eee;
            background: #fafafa;
        }

        .modal-group { margin-bottom: 14px; }
        .modal-group label { display: block; font-weight: bold; margin-bottom: 6px; color: #444; }
        .modal-group input[type="text"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 0.95em;
            box-sizing: border-box;
        }

        .desativar-box {
            background: #fff3e0;
            border: 1px solid #ffcc80;
            border-radius: 6px;
            padding: 10px;
            color: #e65100;
            font-size: 0.9em;
        }
        
        /* Gráfico de Pizza */
        .pie-chart-container {
            display: flex;
            align-items: center;
            gap: 15px;
        }
        
        .pie-chart {
            width: 80px;
            height: 80px;
            border-radius: 50%;
            background: conic-gradient(
                #28a745 0deg <?= $percentual_ativas * 3.6 ?>deg,
                #dc3545 <?= $percentual_ativas * 3.6 ?>deg 360deg
            );
            position: relative;
            box-shadow: 0 2px 8px rgba(0,0,0,0.15);
        }
        
        .pie-chart-center {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            width: 50px;
            height: 50px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            color: #004d99;
            font-size: 0.9em;
        }
        
        .pie-legend {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        
        .pie-legend-item {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.9em;
        }
        
        .pie-legend-color {
            width: 16px;
            height: 16px;
            border-radius: 3px;
        }
        
        .color-ativa { background: #28a745; }
        .color-inativa { background: #dc3545; }
        
        .pie-legend-text {
            display: flex;
            gap: 6px;
            align-items: center;
        }
        
        .pie-legend-value {
            font-weight: bold;
            color: #004d99;
        }
    </style>
</head>
<body>

<div class="container">
    <h1>📊 Gerenciamento de Pesquisas</h1>

    <?php if (isset($_GET['msg'])): ?>
        <?php if ($_GET['msg'] === 'success'): ?>
            <div class="alert alert-success"><?= htmlspecialchars($_GET['detalhe'] ?? 'Operação realizada com sucesso.') ?></div>
        <?php elseif ($_GET['msg'] === 'error'): ?>
            <div class="alert alert-error"><?= htmlspecialchars($_GET['detalhe'] ?? 'Ocorreu um erro ao processar a solicitação.') ?></div>
        <?php endif; ?>
    <?php endif; ?>
    
    <div style="margin-bottom: 20px; display: flex; gap: 10px;">
        <a href="nova_pesquisa.php" class="btn">+ Nova Pesquisa</a>
        <a href="principal.php" class="btn btn-secondary">← Voltar ao Menu Principal</a>
    </div>

    <form method="get" action="pesquisas.php" style="background:#f8f9fa; border:1px solid #e0e0e0; border-radius:8px; padding:10px; margin-bottom:10px; display:flex; gap:8px; align-items:end; flex-wrap:wrap;">
        <div style="min-width:280px; flex:1;">
            <label style="display:block; font-weight:bold; margin-bottom:4px;">Filtro por Projeto</label>
            <select name="filtro_projeto" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                <option value="">Todos os projetos</option>
                <?php foreach ($projetos_filtro as $pf): ?>
                    <option value="<?= (int)$pf['id_projeto'] ?>" <?= $filtro_projeto === (int)$pf['id_projeto'] ? 'selected' : '' ?>>
                        <?= htmlspecialchars($pf['nome_projeto']) ?> — <?= htmlspecialchars($pf['nome_cliente']) ?>
                    </option>
                <?php endforeach; ?>
            </select>
        </div>
        <button type="submit" class="btn">Filtrar</button>
        <a href="pesquisas.php" class="btn btn-secondary">Limpar</a>
    </form>

    <div style="margin-bottom: 12px; color: #555; font-size: 0.9em;">
        <?php if ($pode_editar_desativar): ?>
            <strong style="color:#2e7d32;">✔ Permissão:</strong> Como administrador, você pode editar o nome e ativar/desativar pesquisas.
        <?php else: ?>
            <strong style="color:#bf360c;">🔒 Permissão:</strong> Somente administradores podem editar o nome e alterar status de pesquisas.
        <?php endif; ?>
    </div>
    
    <?php if ($pesquisas->num_rows > 0): ?>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Nome</th>
                <th>Projeto</th>
                <th>Cliente</th>
                <th>Questionário</th>
                <th>Base</th>
                <th>Data</th>
                <th>Status</th>
                <th>Empresas</th>
                <th>Ações</th>
            </tr>
        </thead>
        <tbody>
            <?php while($pesquisa = $pesquisas->fetch_assoc()): ?>
            <?php
                $status_raw = strtolower(trim((string)($pesquisa['status'] ?? '')));
                $status_css = ($status_raw === 'ativa') ? 'ativa' : 'inativa';
                $status_label = ($status_raw === 'ativa') ? 'Ativa' : 'Inativa';
            ?>
            <tr>
                <td><?= $pesquisa['id'] ?></td>
                <td><?= htmlspecialchars($pesquisa['nome']) ?></td>
                <td><?= htmlspecialchars($pesquisa['nome_projeto'] ?? '-') ?></td>
                <td><?= htmlspecialchars($pesquisa['nome_cliente'] ?? '-') ?></td>
                <td><?= htmlspecialchars($pesquisa['nome_questionario'] ?? 'N/A') ?></td>
                <td><?= htmlspecialchars($pesquisa['nome_base'] ?? '-') ?></td>
                <td><?= date('d/m/Y', strtotime($pesquisa['data_pesquisa'])) ?></td>
                <td>
                    <span class="badge badge-<?= $status_css ?>">
                        <?= $status_label ?>
                    </span>
                </td>
                <td><?= $pesquisa['total_empresas'] ?></td>
                <td>
                    <a href="visualizar_pesquisa.php?id=<?= (int)$pesquisa['id'] ?>" target="_self" class="btn" style="padding: 6px 12px; font-size: 0.85em;">
                        👁️ Ver
                    </a>
                    <?php if ($pode_editar_desativar): ?>
                    <button 
                        type="button" 
                        class="btn-edit"
                        onclick="abrirModalEditar(<?= (int)$pesquisa['id'] ?>, <?= htmlspecialchars(json_encode($pesquisa['nome']), ENT_QUOTES, 'UTF-8') ?>, <?= htmlspecialchars(json_encode($status_css), ENT_QUOTES, 'UTF-8') ?>)"
                    >✏️ Editar</button>
                    <button
                        type="button"
                        class="btn-delete"
                        onclick="abrirModalExcluir(
                            <?= (int)$pesquisa['id'] ?>,
                            <?= htmlspecialchars(json_encode((string)($pesquisa['nome'] ?? '')), ENT_QUOTES, 'UTF-8') ?>
                        )"
                    >🗑️ Excluir</button>
                    <?php endif; ?>
                </td>
            </tr>
            <?php endwhile; ?>
        </tbody>
    </table>
    <?php else: ?>
    <div class="empty-state">
        <div class="empty-state-icon">📋</div>
        <h3>Nenhuma pesquisa cadastrada</h3>
        <p>Comece criando sua primeira pesquisa.</p>
    </div>
    <?php endif; ?>
</div>

<?php if ($pode_editar_desativar): ?>
<div class="modal-overlay" id="modal-editar-pesquisa">
    <div class="modal">
        <div class="modal-header">
            <h3 style="margin:0; font-size: 1.1em;">✏️ Editar Pesquisa</h3>
            <button type="button" class="modal-close" onclick="fecharModalEditar()">✖</button>
        </div>
        <form method="POST">
            <div class="modal-body">
                <input type="hidden" name="acao" value="editar_pesquisa">
                <input type="hidden" name="id_pesquisa" id="modal-id-pesquisa">

                <div class="modal-group">
                    <label for="modal-novo-nome">Nome da Pesquisa</label>
                    <input type="text" id="modal-novo-nome" name="novo_nome" maxlength="255" required>
                </div>

                <div class="desativar-box">
                    <label style="display:flex; gap:8px; align-items: center; margin:0; font-weight: bold;">
                        <input type="checkbox" id="modal-desativar" name="desativar" value="1">
                        Desativar esta pesquisa
                    </label>
                    <div style="margin-top: 6px; font-size: 0.88em;">Ao marcar esta opção, o status da pesquisa será alterado para <strong>Inativa</strong>.</div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" onclick="fecharModalEditar()">Cancelar</button>
                <button type="submit" class="btn-mini">💾 Salvar alterações</button>
            </div>
        </form>
    </div>
</div>

<div class="modal-overlay" id="modal-excluir-pesquisa">
    <div class="modal">
        <div class="modal-header" style="background:#c62828;">
            <h3 style="margin:0; font-size: 1.1em;">🗑️ Confirmar Exclusão</h3>
            <button type="button" class="modal-close" onclick="fecharModalExcluir()">✖</button>
        </div>
        <form method="POST" action="excluir_pesquisa.php" id="form-excluir-pesquisa">
            <div class="modal-body">
                <input type="hidden" name="id" id="excluir-id-pesquisa">
                <input type="hidden" name="pesquisa_esperada" id="excluir-pesquisa-esperada">

                <div style="margin-bottom: 10px; color: #b71c1c; font-weight: bold;">
                    Esta ação exclui permanentemente todos os dados da pesquisa.
                </div>

                <div class="modal-group">
                    <label>Pesquisa</label>
                    <div id="excluir-nome-pesquisa" style="padding:10px; border:1px solid #ddd; border-radius:4px; background:#fafafa;"></div>
                </div>

                <div class="modal-group">
                    <label>Digite o nome da pesquisa para confirmar</label>
                    <div id="excluir-nome-pesquisa-confirmacao" style="padding:10px; border:1px solid #ddd; border-radius:4px; background:#fff8e1; margin-bottom:8px; font-weight:bold; color:#e65100;"></div>
                    <input type="text" id="excluir-confirmacao" name="confirmacao_pesquisa" maxlength="255" required placeholder="Digite exatamente o nome da pesquisa">
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" onclick="fecharModalExcluir()">Cancelar</button>
                <button type="submit" class="btn-delete" style="margin-left:0;" id="btn-confirmar-excluir">Confirmar Exclusão</button>
            </div>
        </form>
    </div>
</div>


<script>
function abrirModalEditar(id, nome, status) {
    document.getElementById('modal-id-pesquisa').value = id;
    document.getElementById('modal-novo-nome').value = nome || '';
    document.getElementById('modal-desativar').checked = (status === 'inativa');
    document.getElementById('modal-editar-pesquisa').style.display = 'flex';
}

function fecharModalEditar() {
    document.getElementById('modal-editar-pesquisa').style.display = 'none';
}

function abrirModalExcluir(id, nomePesquisa) {
    document.getElementById('excluir-id-pesquisa').value = id;
    document.getElementById('excluir-pesquisa-esperada').value = nomePesquisa || '';
    document.getElementById('excluir-nome-pesquisa-confirmacao').textContent = nomePesquisa || '(Pesquisa não informada)';
    document.getElementById('excluir-nome-pesquisa').textContent = nomePesquisa || '-';
    document.getElementById('excluir-confirmacao').value = '';
    document.getElementById('modal-excluir-pesquisa').style.display = 'flex';
}

function fecharModalExcluir() {
    document.getElementById('modal-excluir-pesquisa').style.display = 'none';
}


document.getElementById('form-excluir-pesquisa').addEventListener('submit', function(e) {
    var esperado = (document.getElementById('excluir-pesquisa-esperada').value || '').trim().toLowerCase();
    var digitado = (document.getElementById('excluir-confirmacao').value || '').trim().toLowerCase();

    if (!esperado || esperado !== digitado) {
        e.preventDefault();
        alert('Confirmação inválida. Digite exatamente o nome da pesquisa para excluir.');
    }
});

window.addEventListener('click', function (event) {
    const modal = document.getElementById('modal-editar-pesquisa');
    if (event.target === modal) {
        fecharModalEditar();
    }
    const modalExcluir = document.getElementById('modal-excluir-pesquisa');
    if (event.target === modalExcluir) {
        fecharModalExcluir();
    }
});
</script>
<?php endif; ?>

</body>
</html>
