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

$id_pesquisa = (int)($_GET['id'] ?? 0);

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

// Buscar dados da pesquisa
$stmt = $conn->prepare("
    SELECT p.*, qt.nome as nome_questionario, pr.nome_projeto, c.nome_cliente, b.nome_base
    FROM pesquisas p
    LEFT JOIN questionario_template qt ON p.id_questionario_template_fk = qt.id
    LEFT JOIN projetos pr ON p.id_projeto_fk = pr.id_projeto
    LEFT JOIN clientes_bms c ON pr.id_cliente_fk = c.id_cliente
    LEFT JOIN bases b ON b.idbase = p.idbase_fk
    WHERE p.id = ?
");
$stmt->bind_param('i', $id_pesquisa);
$stmt->execute();
$pesquisa = $stmt->get_result()->fetch_assoc();

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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao']) && $_POST['acao'] === 'cadastrar_empresa_pesquisa') {
    if (!$pode_gerenciar_empresa) {
        header('Location: visualizar_pesquisa.php?id=' . $id_pesquisa . '&msg=error&detalhe=' . urlencode('Somente administradores podem cadastrar empresas na pesquisa.'));
        exit;
    }

    $cnpj = trim((string)($_POST['cnpj'] ?? ''));
    $razao_social = trim((string)($_POST['razao_social'] ?? ''));
    $rua = trim((string)($_POST['rua'] ?? ''));
    $numero = trim((string)($_POST['numero'] ?? ''));
    $complemento = trim((string)($_POST['complemento'] ?? ''));
    $bairro = trim((string)($_POST['bairro'] ?? ''));
    $nome_fantasia = trim((string)($_POST['nome_fantasia'] ?? ''));
    $cidade = trim((string)($_POST['cidade'] ?? ''));
    $uf = strtoupper(trim((string)($_POST['uf'] ?? '')));
    $cep = trim((string)($_POST['cep'] ?? ''));
    $ddd = trim((string)($_POST['ddd'] ?? ''));
    $telefone = trim((string)($_POST['telefone'] ?? ''));
    $cnae = trim((string)($_POST['cnae'] ?? ''));
    $site = trim((string)($_POST['site'] ?? ''));
    $porte = trim((string)($_POST['porte'] ?? ''));
    $funcionarios = trim((string)($_POST['funcionarios'] ?? ''));

    if ($cnpj === '' || $nome_fantasia === '') {
        header('Location: visualizar_pesquisa.php?id=' . $id_pesquisa . '&msg=error&detalhe=' . urlencode('CNPJ e Nome Fantasia são obrigatórios.'));
        exit;
    }

    $idbase = (int)($pesquisa['idbase_fk'] ?? 0);
    $nome_base = (string)($pesquisa['nome_base'] ?? '');
    $id_modelo_departamento = (int)($pesquisa['id_modelo_departamento_fk'] ?? 0);

    if ($idbase <= 0 || $nome_base === '') {
        header('Location: visualizar_pesquisa.php?id=' . $id_pesquisa . '&msg=error&detalhe=' . urlencode('A pesquisa não possui base vinculada.'));
        exit;
    }

    try {
        $conn->begin_transaction();

        $stmt_check_empresa = $conn->prepare("SELECT ID_EMPRESA FROM empresas WHERE CNPJ = ? LIMIT 1");
        $stmt_check_empresa->bind_param('s', $cnpj);
        $stmt_check_empresa->execute();
        $empresa_existente = $stmt_check_empresa->get_result()->fetch_assoc();
        $stmt_check_empresa->close();

        if ($empresa_existente) {
            $id_empresa = (int)$empresa_existente['ID_EMPRESA'];
        } else {
            $stmt_next_id = $conn->prepare("SELECT COALESCE(MAX(ID_EMPRESA), 0) + 1 AS proximo_id FROM empresas");
            $stmt_next_id->execute();
            $id_empresa = (int)($stmt_next_id->get_result()->fetch_assoc()['proximo_id'] ?? 1);
            $stmt_next_id->close();

            $stmt_insert_empresa = $conn->prepare("
                INSERT INTO empresas
                (ID_EMPRESA, CNPJ, NOME_FANTASIA, EMPRESA, RUA, NUMERO, COMPL_NUM, BAIRRO, CIDADE, UF, CEP, DDD, TEL, CNAE, FUNCIONARIOS, SITE, BASE, idbase, PORTE, ATIVA)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'S')
            ");
            $stmt_insert_empresa->bind_param(
                'i' . str_repeat('s', 16) . 'is',
                $id_empresa,
                $cnpj,
                $nome_fantasia,
                $razao_social,
                $rua,
                $numero,
                $complemento,
                $bairro,
                $cidade,
                $uf,
                $cep,
                $ddd,
                $telefone,
                $cnae,
                $funcionarios,
                $site,
                $nome_base,
                $idbase,
                $porte
            );
            if (!$stmt_insert_empresa->execute()) {
                throw new Exception('Erro ao cadastrar empresa: ' . $stmt_insert_empresa->error);
            }
            $stmt_insert_empresa->close();
        }

        $stmt_check_vinculo = $conn->prepare("SELECT id FROM pesquisa_empresa WHERE id_pesquisa_fk = ? AND id_empresa_fk = ? LIMIT 1");
        $stmt_check_vinculo->bind_param('ii', $id_pesquisa, $id_empresa);
        $stmt_check_vinculo->execute();
        $vinculo_existente = $stmt_check_vinculo->get_result()->fetch_assoc();
        $stmt_check_vinculo->close();

        if ($vinculo_existente) {
            throw new Exception('Esta empresa já está vinculada ao questionário da pesquisa.');
        }

        $status_padrao = 1;
        if ($res = $conn->query("SELECT id_status FROM statusdoquestionario WHERE nome_status LIKE '%não trabalhad%' LIMIT 1")) {
            $row = $res->fetch_assoc();
            if ($row && isset($row['id_status'])) {
                $status_padrao = (int)$row['id_status'];
            }
        }

        $responsavel_pesquisa = trim((string)($_SESSION['usuario_nome'] ?? $_SESSION['usuario_login'] ?? ''));
        $stmt_vincular = $conn->prepare("
            INSERT INTO pesquisa_empresa (id_pesquisa_fk, id_empresa_fk, status, responsavel_pesquisa, id_status_questionario_fk)
            VALUES (?, ?, 'pendente', ?, ?)
        ");
        $stmt_vincular->bind_param('iisi', $id_pesquisa, $id_empresa, $responsavel_pesquisa, $status_padrao);
        if (!$stmt_vincular->execute()) {
            throw new Exception('Erro ao vincular empresa na pesquisa: ' . $stmt_vincular->error);
        }
        $id_pesquisa_empresa_novo = (int)$conn->insert_id;
        $stmt_vincular->close();

        if ($id_modelo_departamento > 0) {
            $stmt_contatos_insert = $conn->prepare("
                INSERT INTO pesquisa_contatos (id_pesquisa_empresa_fk, id_contato_empresa_fk, nome, email, telefone, area)
                SELECT pe.id, c.idcontatos_empresa, c.nome, c.email, c.tel AS telefone,
                    COALESCE(md_ok.nome_departamento, md_default.nome_departamento, '') AS area
                FROM pesquisa_empresa pe
                INNER JOIN contatos_empresa c ON c.id_empresa = pe.id_empresa_fk
                LEFT JOIN departamentos_modelos_itens md_ok
                    ON md_ok.id_modelo_fk = ?
                   AND md_ok.ativo = 'S'
                   AND LOWER(TRIM(md_ok.nome_departamento)) = LOWER(TRIM(c.depto))
                LEFT JOIN departamentos_modelos_itens md_default
                    ON md_default.id_item = (
                        SELECT mdi2.id_item
                        FROM departamentos_modelos_itens mdi2
                        WHERE mdi2.id_modelo_fk = ? AND mdi2.ativo = 'S'
                        ORDER BY mdi2.ordem ASC, mdi2.nome_departamento ASC
                        LIMIT 1
                    )
                WHERE pe.id = ?
            ");
            $stmt_contatos_insert->bind_param('iii', $id_modelo_departamento, $id_modelo_departamento, $id_pesquisa_empresa_novo);
            $stmt_contatos_insert->execute();
            $stmt_contatos_insert->close();
        }

        registrar_log_interacao(
            $conn,
            'CADASTRO_EMPRESA_PESQUISA',
            'Empresa cadastrada/vinculada na pesquisa #' . $id_pesquisa
                . ' | Empresa ID: ' . $id_empresa
                . ' | CNPJ: ' . $cnpj
                . ' | Nome Fantasia: ' . $nome_fantasia,
            ['modulo' => 'visualizar_pesquisa.php']
        );

        $conn->commit();
        header('Location: visualizar_pesquisa.php?id=' . $id_pesquisa . '&msg=success&detalhe=' . urlencode('Empresa cadastrada na base e vinculada ao questionário da pesquisa com sucesso.'));
        exit;
    } catch (Exception $e) {
        $conn->rollback();
        header('Location: visualizar_pesquisa.php?id=' . $id_pesquisa . '&msg=error&detalhe=' . urlencode($e->getMessage()));
        exit;
    }
}

$idModeloClassificacaoPesquisa = (int)($pesquisa['id_modelo_classificacao_lead_fk'] ?? 0);
if ($idModeloClassificacaoPesquisa <= 0) {
    $idModeloClassificacaoPesquisa = garantir_modelo_classificacao_lead_padrao($conn);
}

$idModeloFaixaPesquisa = (int)($pesquisa['id_modelo_faixa_funcionario_fk'] ?? 0);
if ($idModeloFaixaPesquisa <= 0) {
    $idModeloFaixaPesquisa = garantir_modelo_faixa_funcionario_padrao($conn);
}

// Filtro de status do questionário
$filtro_status = $_GET['status_filtro'] ?? '';

// Filtro de empresa
$filtro_empresa = $_GET['filtro_empresa'] ?? '';

// Novos filtros
$filtro_uf = $_GET['filtro_uf'] ?? '';
$filtro_funcionarios = $_GET['filtro_funcionarios'] ?? '';
$filtro_qtd_contatos = $_GET['filtro_qtd_contatos'] ?? '';
$filtro_base = (int)($_GET['filtro_base'] ?? 0);
$filtro_porte = $_GET['filtro_porte'] ?? '';
$filtro_cnae = $_GET['filtro_cnae'] ?? '';
$filtro_data_retorno_agendado = $_GET['filtro_data_retorno_agendado'] ?? '';

// Adicionar definição do filtro_id para evitar o warning
$filtro_id = trim($_GET['filtro_id'] ?? '');

// Paginação
$registros_por_pagina = (int)($_GET['registros_por_pagina'] ?? 10);
$pagina_atual = max(1, (int)($_GET['pagina'] ?? 1));
$offset = ($pagina_atual - 1) * $registros_por_pagina;

// Construir query com filtros
$query_base = "
    SELECT 
        pe.id,
        pe.id_pesquisa_fk,
        pe.id_empresa_fk,
        pe.status,
        pe.data_resposta,
        pe.responsavel_pesquisa,
        pe.id_status_questionario_fk,
        pe.nota_total,
        pe.classificacao,
        pe.observacoes_internas,
        cl.cor as cor_classificacao,
        e.NOME_FANTASIA,
        e.EMPRESA,
        e.ID_EMPRESA,
        s2.nome_status as status_questionario,
        s2.id_status as id_status_questionario,
        COUNT(DISTINCT pr.id) as total_respostas,
        COUNT(DISTINCT pc.id) as total_contatos
    FROM pesquisa_empresa pe
    LEFT JOIN empresas e ON pe.id_empresa_fk = e.ID_EMPRESA
    LEFT JOIN pesquisa_respostas pr ON pe.id = pr.id_pesquisa_empresa_fk
    LEFT JOIN pesquisa_contatos pc ON pe.id = pc.id_pesquisa_empresa_fk
    LEFT JOIN statusdoquestionario s2 ON pe.id_status_questionario_fk = s2.id_status
    LEFT JOIN classificacao_leads_modelos_itens cl
        ON pe.nota_total >= cl.faixa_minima
       AND pe.nota_total <= cl.faixa_maxima
       AND cl.id_modelo_fk = ?
       AND cl.ativo = 'S'
    WHERE pe.id_pesquisa_fk = ?
";

$filtros = [];
$tipos_bind = 'ii';
$valores_bind = [$idModeloClassificacaoPesquisa, $id_pesquisa];

// Aplicar filtro de status
if (!empty($filtro_status) && is_numeric($filtro_status)) {
    $query_base .= " AND pe.id_status_questionario_fk = ?";
    $tipos_bind .= 'i';
    $valores_bind[] = (int)$filtro_status;
}

// Aplicar filtro por ID (pesquisa_empresa)
if (!empty($filtro_id) && is_numeric($filtro_id)) {
    $query_base .= " AND pe.id = ?";
    $tipos_bind .= 'i';
    $valores_bind[] = (int)$filtro_id;
}

// Aplicar filtro de empresa
if (!empty($filtro_empresa)) {
    $query_base .= " AND (e.NOME_FANTASIA LIKE ? OR e.EMPRESA LIKE ?)";
    $tipos_bind .= 'ss';
    $termo = '%' . $filtro_empresa . '%';
    $valores_bind[] = $termo;
    $valores_bind[] = $termo;
}

// Aplicar filtro de UF
if (!empty($filtro_uf)) {
    $query_base .= " AND e.UF = ?";
    $tipos_bind .= 's';
    $valores_bind[] = $filtro_uf;
}

// Aplicar filtro de quantidade de funcionários
if (!empty($filtro_funcionarios)) {
    // Extrair os valores mínimo e máximo da faixa
    if (strpos($filtro_funcionarios, '+') !== false) {
        // Para "1001+" buscar valores >= 1001
        $minimo = (int)str_replace('+', '', $filtro_funcionarios);
        $query_base .= " AND CAST(e.FUNCIONARIOS AS UNSIGNED) >= ?";
        $tipos_bind .= 'i';
        $valores_bind[] = $minimo;
    } else if (strpos($filtro_funcionarios, '-') !== false) {
        // Para faixas como "1-10", "11-50", etc
        list($minimo, $maximo) = explode('-', $filtro_funcionarios);
        $query_base .= " AND CAST(e.FUNCIONARIOS AS UNSIGNED) BETWEEN ? AND ?";
        $tipos_bind .= 'ii';
        $valores_bind[] = (int)$minimo;
        $valores_bind[] = (int)$maximo;
    }
}

// Aplicar filtro de quantidade de contatos
if (!empty($filtro_qtd_contatos)) {
    if ($filtro_qtd_contatos === '0') {
        $query_base .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) = 0";
    } elseif ($filtro_qtd_contatos === '1-5') {
        $query_base .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) BETWEEN 1 AND 5";
    } elseif ($filtro_qtd_contatos === '6-10') {
        $query_base .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) BETWEEN 6 AND 10";
    } elseif ($filtro_qtd_contatos === '11+') {
        $query_base .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) >= 11";
    }
}

// Aplicar filtro de Base
if (!empty($filtro_base)) {
    $query_base .= " AND e.idbase = ?";
    $tipos_bind .= 'i';
    $valores_bind[] = $filtro_base;
}

// Aplicar filtro de Porte
if (!empty($filtro_porte)) {
    $query_base .= " AND e.PORTE LIKE ?";
    $tipos_bind .= 's';
    $valores_bind[] = '%' . $filtro_porte . '%';
}

// Aplicar filtro de CNAE
if (!empty($filtro_cnae)) {
    $query_base .= " AND e.CNAE LIKE ?";
    $tipos_bind .= 's';
    $valores_bind[] = '%' . $filtro_cnae . '%';
}

// Aplicar filtro de data de retorno agendado (na tabela pesquisa_empresa)
if (!empty($filtro_data_retorno_agendado)) {
    $query_base .= " AND DATE(pe.agendamento_data_retorno) = ?";
    $tipos_bind .= 's';
    $valores_bind[] = $filtro_data_retorno_agendado;
}

$query_base .= " GROUP BY pe.id ORDER BY e.NOME_FANTASIA";

// Contar total de registros - criar query de contagem separada
$query_count = "
    SELECT COUNT(*) as total
    FROM (
        SELECT DISTINCT pe.id
        FROM pesquisa_empresa pe
        LEFT JOIN empresas e ON pe.id_empresa_fk = e.ID_EMPRESA
        LEFT JOIN statusdoquestionario s2 ON pe.id_status_questionario_fk = s2.id_status
        WHERE pe.id_pesquisa_fk = ?
";

$valores_count = [$id_pesquisa];
$tipos_count = 'i';

// Aplicar filtro de status à query de contagem
if (!empty($filtro_status) && is_numeric($filtro_status)) {
    $query_count .= " AND pe.id_status_questionario_fk = ?";
    $tipos_count .= 'i';
    $valores_count[] = (int)$filtro_status;
}

// Aplicar filtro por ID à query de contagem
if (!empty($filtro_id) && is_numeric($filtro_id)) {
    $query_count .= " AND pe.id = ?";
    $tipos_count .= 'i';
    $valores_count[] = (int)$filtro_id;
}

// Aplicar filtro de empresa à query de contagem
if (!empty($filtro_empresa)) {
    $query_count .= " AND (e.NOME_FANTASIA LIKE ? OR e.EMPRESA LIKE ?)";
    $tipos_count .= 'ss';
    $termo = '%' . $filtro_empresa . '%';
    $valores_count[] = $termo;
    $valores_count[] = $termo;
}

// Aplicar filtro de UF à query de contagem
if (!empty($filtro_uf)) {
    $query_count .= " AND e.UF = ?";
    $tipos_count .= 's';
    $valores_count[] = $filtro_uf;
}

// Aplicar filtro de quantidade de funcionários à query de contagem
if (!empty($filtro_funcionarios)) {
    // Extrair os valores mínimo e máximo da faixa
    if (strpos($filtro_funcionarios, '+') !== false) {
        // Para "1001+" buscar valores >= 1001
        $minimo = (int)str_replace('+', '', $filtro_funcionarios);
        $query_count .= " AND CAST(e.FUNCIONARIOS AS UNSIGNED) >= ?";
        $tipos_count .= 'i';
        $valores_count[] = $minimo;
    } else if (strpos($filtro_funcionarios, '-') !== false) {
        // Para faixas como "1-10", "11-50", etc
        list($minimo, $maximo) = explode('-', $filtro_funcionarios);
        $query_count .= " AND CAST(e.FUNCIONARIOS AS UNSIGNED) BETWEEN ? AND ?";
        $tipos_count .= 'ii';
        $valores_count[] = (int)$minimo;
        $valores_count[] = (int)$maximo;
    }
}

// Aplicar filtro de quantidade de contatos à query de contagem
if (!empty($filtro_qtd_contatos)) {
    if ($filtro_qtd_contatos === '0') {
        $query_count .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) = 0";
    } elseif ($filtro_qtd_contatos === '1-5') {
        $query_count .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) BETWEEN 1 AND 5";
    } elseif ($filtro_qtd_contatos === '6-10') {
        $query_count .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) BETWEEN 6 AND 10";
    } elseif ($filtro_qtd_contatos === '11+') {
        $query_count .= " AND (SELECT COUNT(*) FROM pesquisa_contatos pcf WHERE pcf.id_pesquisa_empresa_fk = pe.id) >= 11";
    }
}

// Aplicar filtro de Base à query de contagem
if (!empty($filtro_base)) {
    $query_count .= " AND e.idbase = ?";
    $tipos_count .= 'i';
    $valores_count[] = $filtro_base;
}

// Aplicar filtro de Porte à query de contagem
if (!empty($filtro_porte)) {
    $query_count .= " AND e.PORTE LIKE ?";
    $tipos_count .= 's';
    $valores_count[] = '%' . $filtro_porte . '%';
}

// Aplicar filtro de CNAE à query de contagem
if (!empty($filtro_cnae)) {
    $query_count .= " AND e.CNAE LIKE ?";
    $tipos_count .= 's';
    $valores_count[] = '%' . $filtro_cnae . '%';
}

// Aplicar filtro de data de retorno agendado à query de contagem
if (!empty($filtro_data_retorno_agendado)) {
    $query_count .= " AND DATE(pe.agendamento_data_retorno) = ?";
    $tipos_count .= 's';
    $valores_count[] = $filtro_data_retorno_agendado;
}

$query_count .= "
    ) as contagem_resultado
";

$stmt_count = $conn->prepare($query_count);
if ($stmt_count) {
    $stmt_count->bind_param($tipos_count, ...$valores_count);
    $stmt_count->execute();
    $result_count = $stmt_count->get_result()->fetch_assoc();
    $total_registros = $result_count['total'] ?? 0;
} else {
    $total_registros = 0;
}

$total_paginas = ceil($total_registros / $registros_por_pagina);

// Buscar empresas com paginação
$query_paginada = $query_base . " LIMIT ? OFFSET ?";
$stmt = $conn->prepare($query_paginada);
if ($stmt) {
    $tipos_bind .= 'ii';
    $valores_bind[] = $registros_por_pagina;
    $valores_bind[] = $offset;
    $stmt->bind_param($tipos_bind, ...$valores_bind);
    $stmt->execute();
    $empresas = $stmt->get_result();
} else {
    $empresas = null;
}

// Buscar todos os status disponíveis
$stmt_status = $conn->prepare("SELECT id_status, nome_status FROM statusdoquestionario ORDER BY nome_status");
$stmt_status->execute();
$status_list = $stmt_status->get_result();

// Resumo por status do questionário
$stmt_resumo = $conn->prepare("
    SELECT s.nome_status, COUNT(*) as total 
    FROM pesquisa_empresa pe 
    LEFT JOIN statusdoquestionario s ON pe.id_status_questionario_fk = s.id_status 
    WHERE pe.id_pesquisa_fk = ? 
    GROUP BY s.nome_status
");
$stmt_resumo->bind_param('i', $id_pesquisa);
$stmt_resumo->execute();
$resumo_status = $stmt_resumo->get_result();

$status_totais = [];

while ($row = $resumo_status->fetch_assoc()) {
    $nome = $row['nome_status'] ?? 'Sem Status';
    $status_totais[$nome] = (int)$row['total'];
}

$total_questionarios = array_sum($status_totais);
// Nota e classificação da pesquisa (média das empresas)
$nota_media = 0;
$classificacao_media = '-';
$cor_media = '#cccccc';
$stmt_nota_media = $conn->prepare("SELECT AVG(nota_total) as media FROM pesquisa_empresa WHERE id_pesquisa_fk = ?");
$stmt_nota_media->bind_param('i', $id_pesquisa);
$stmt_nota_media->execute();
$nota_row = $stmt_nota_media->get_result()->fetch_assoc();
$nota_media = round((float)($nota_row['media'] ?? 0), 2);

$stmt_class_media = $conn->prepare("
    SELECT classificacao, cor
    FROM classificacao_leads_modelos_itens 
    WHERE id_modelo_fk = ?
      AND ativo = 'S'
      AND ? >= faixa_minima AND ? <= faixa_maxima 
    LIMIT 1
");
$stmt_class_media->bind_param('idd', $idModeloClassificacaoPesquisa, $nota_media, $nota_media);
$stmt_class_media->execute();
$class_row = $stmt_class_media->get_result()->fetch_assoc();
if ($class_row) {
    $classificacao_media = $class_row['classificacao'];
    $cor_media = $class_row['cor'];
}

// Buscar faixas de funcionários
$faixas = listar_faixas_por_modelo($conn, $idModeloFaixaPesquisa, true);

$bases_disponiveis = listar_bases($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>Pesquisa: <?= htmlspecialchars($pesquisa['nome']) ?></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: 6px; font-size: 1.2em; }
        
        .alert { padding: 15px; margin: 20px 0; border-radius: 6px; }
        .alert-success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
        
        .info-grid { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 18px; align-items: center; }
        .info-card { display: flex; align-items: baseline; gap: 6px; background: none; padding: 0; border-radius: 0; border-left: none; }
        .info-card strong { color: #004d99; display: inline; margin-bottom: 0; font-size: 0.85em; }
        .info-card span { color: #666; font-size: 0.85em; }
        
        .btn { background-color: #004d99; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; font-size: 0.95em; margin: 5px; }
        .btn:hover { background-color: #003366; }
        .btn-secondary { background-color: #6c757d; }
        .btn-secondary:hover { background-color: #5a6268; }
        .btn-small { padding: 6px 12px; font-size: 0.85em; }
        .btn-add-company { background-color: #1565c0; color: #fff; }
        .btn-add-company:hover { background-color: #0d47a1; }
        
        table { width: 100%; border-collapse: collapse; margin-top: 20px; background: white; }
        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.8em; font-weight: bold; display: inline-block; }
        .badge-pendente { background: #fff3cd; color: #856404; }
        .badge-respondida { background: #c8e6c9; color: #1b5e20; }
        .badge-cancelada { background: #ffccbc; color: #bf360c; }
        
        .empty-state { text-align: center; padding: 60px 20px; color: #999; }
        .empty-state-icon { font-size: 64px; margin-bottom: 20px; }
        
        /* Paginação */
        .pagination { display: flex; justify-content: center; gap: 5px; margin: 20px 0; flex-wrap: wrap; }
        .pagination a, .pagination span { padding: 8px 12px; border: 1px solid #ddd; border-radius: 4px; text-decoration: none; color: #004d99; }
        .pagination a:hover { background: #f0f0f0; }
        .pagination .active { background: #004d99; color: white; border-color: #004d99; }
        .pagination .disabled { color: #999; cursor: not-allowed; }
        
        .pagination-info { text-align: center; margin: 15px 0; color: #666; font-size: 0.9em; }
        
        /* Accordion para contatos */
        .empresa-card { 
            background: white;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            margin-bottom: 15px;
            overflow: hidden;
            box-shadow: 0 2px 4px rgba(0,0,0,0.08);
            transition: all 0.3s;
        }
        
        .empresa-card:hover {
            box-shadow: 0 4px 12px rgba(0,0,0,0.12);
        }
        
        .empresa-header { 
            display: flex; 
            justify-content: space-between; 
            align-items: center; 
            cursor: pointer; 
            user-select: none; 
            font-weight: bold; 
            color: #004d99;
            padding: 15px;
            background: linear-gradient(135deg, #f8f9fa 0%, #efefef 100%);
            transition: all 0.3s;
        }
        
        .empresa-header:hover { 
            background: linear-gradient(135deg, #efefef 0%, #e0e0e0 100%);
            padding: 15px;
        }
        
        .empresa-header span:last-child {
            transition: transform 0.3s;
        }
        
        .contatos-list { 
            margin: 0;
            padding: 0;
            max-height: 0;
            overflow: hidden;
            transition: all 0.4s ease;
            background-color: #fafafa;
        }
        
        .contatos-list.show { 
            max-height: 1500px;
            padding: 15px;
            border-top: 1px solid #e0e0e0;
        }
        
        .contatos-list strong {
            display: block;
            margin-bottom: 12px;
            color: #004d99;
        }
        
        .contato-item { 
            padding: 12px;
            background: white;
            border-radius: 6px;
            margin-bottom: 10px;
            font-size: 0.95em;
            border-left: 4px solid #007bff;
            transition: all 0.2s;
        }
        
        .contato-item:hover {
            box-shadow: 0 2px 8px rgba(0,0,0,0.1);
            border-left-color: #0056b3;
            transform: translateX(4px);
        }
        
        .contato-nome { 
            font-weight: 600; 
            color: #333;
            margin-bottom: 6px;
        }
        
        .contato-info { 
            color: #666; 
            font-size: 0.9em; 
            margin-top: 6px;
            line-height: 1.5;
            margin-left: 10px;
        }
        .contatos-count-badge {
            background: #1565c0;
            color: #fff;
            border-radius: 20px;
            padding: 4px 10px;
            font-size: 0.78em;
            font-weight: bold;
        }
        .btn-contatos-modal {
            background: #5e35b1;
            color: #fff;
            border: none;
            border-radius: 4px;
            padding: 5px 9px;
            font-size: 0.78em;
            cursor: pointer;
            font-weight: bold;
        }
        .btn-contatos-modal:hover { background: #4527a0; }
        .modal-contatos-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.55);
            z-index: 1200;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }
        .modal-contatos {
            width: 100%;
            max-width: 760px;
            background: #fff;
            border-radius: 10px;
            box-shadow: 0 12px 35px rgba(0,0,0,0.28);
            overflow: hidden;
        }
        .modal-contatos-header {
            background: #004d99;
            color: #fff;
            padding: 12px 16px;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .modal-contatos-body {
            max-height: 65vh;
            overflow: auto;
            padding: 14px;
            background: #f9fbfd;
        }
        .modal-contato-item {
            background: #fff;
            border: 1px solid #e0e6ed;
            border-left: 4px solid #1565c0;
            border-radius: 6px;
            padding: 10px 12px;
            margin-bottom: 10px;
        }

            /* Gráfico de pizza por status */
            .status-chart {
                background: #f8f9fa;
                border: 1px solid #e0e0e0;
                border-radius: 8px;
                padding: 16px;
                margin: 16px 0 20px 0;
            }
            .status-chart-header {
                display: flex;
                justify-content: space-between;
                align-items: center;
                margin-bottom: 12px;
            }
            .status-chart-title {
                font-weight: bold;
                color: #004d99;
            }
            .status-chart-total {
                font-size: 0.95em;
                color: #666;
            }
            .status-chart-canvas-wrapper {
                position: relative;
                width: 100%;
                max-width: 350px;
                margin: 0 auto;
                height: 160px;
            }
    </style>
    <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.7/dist/chart.umd.min.js"></script>
    <script>
    (function() {
        var pesquisaId = <?= json_encode($id_pesquisa) ?>;
        var storageKey = 'filtros_pesquisa_' + pesquisaId;
        var filterKeys = [
            'status_filtro', 'filtro_id', 'filtro_empresa', 'filtro_uf',
            'filtro_funcionarios', 'filtro_qtd_contatos', 'filtro_base', 'filtro_porte', 'filtro_cnae',
            'filtro_data_retorno_agendado', 'registros_por_pagina'
        ];

        var params = new URLSearchParams(window.location.search);
        var hasFilters = false;
        for (var i = 0; i < filterKeys.length; i++) {
            if (params.get(filterKeys[i])) { hasFilters = true; break; }
        }

        if (hasFilters) {
            var saved = {};
            for (var i = 0; i < filterKeys.length; i++) {
                var v = params.get(filterKeys[i]);
                if (v) saved[filterKeys[i]] = v;
            }
            var pg = params.get('pagina');
            if (pg) saved['pagina'] = pg;
            sessionStorage.setItem(storageKey, JSON.stringify(saved));
        } else if (params.get('limpar')) {
            sessionStorage.removeItem(storageKey);
        } else {
            var raw = sessionStorage.getItem(storageKey);
            if (raw) {
                var filtros = JSON.parse(raw);
                var newParams = new URLSearchParams();
                newParams.set('id', pesquisaId);
                var keys = Object.keys(filtros);
                for (var i = 0; i < keys.length; i++) {
                    newParams.set(keys[i], filtros[keys[i]]);
                }
                window.location.replace('visualizar_pesquisa.php?' + newParams.toString());
            }
        }
    })();

    function limparFiltros() {
        var pesquisaId = <?= json_encode($id_pesquisa) ?>;
        sessionStorage.removeItem('filtros_pesquisa_' + pesquisaId);
        window.location.href = 'visualizar_pesquisa.php?id=' + pesquisaId;
    }
    </script>
</head>
<body>

<div class="container">
    <h1><?= htmlspecialchars($pesquisa['nome']) ?></h1>
    <div style="margin-bottom: 14px; font-size: 0.9em; color: #555;">
        <strong style="color: #004d99;">Template utilizada:</strong> <?= htmlspecialchars($pesquisa['nome_questionario'] ?? 'N/A') ?>
    </div>
    
    <?php
    if (isset($_GET['msg']) && $_GET['msg'] === 'success') {
        $detalhe = $_GET['detalhe'] ?? 'Operação realizada com sucesso';
        echo '<div class="alert alert-success">✅ ' . htmlspecialchars($detalhe) . '</div>';
    } elseif (isset($_GET['msg']) && $_GET['msg'] === 'error') {
        $detalhe = $_GET['detalhe'] ?? 'Ocorreu um erro ao processar a solicitação.';
        echo '<div class="alert" style="background:#f8d7da; color:#721c24; border:1px solid #f5c6cb;">❌ ' . htmlspecialchars($detalhe) . '</div>';
    }
    ?>
    
    <div class="info-grid">
        <div class="info-card">
            <strong>Questionário</strong>
            <span><?= htmlspecialchars($pesquisa['nome_questionario'] ?? 'N/A') ?></span>
        </div>
        <div class="info-card">
            <strong>Projeto</strong>
            <span><?= htmlspecialchars($pesquisa['nome_projeto'] ?? '-') ?></span>
        </div>
        <div class="info-card">
            <strong>Cliente</strong>
            <span><?= htmlspecialchars($pesquisa['nome_cliente'] ?? '-') ?></span>
        </div>
        <div class="info-card">
            <strong>Base</strong>
            <span><?= htmlspecialchars($pesquisa['nome_base'] ?? '-') ?></span>
        </div>
        <div class="info-card">
            <strong>Data da Pesquisa</strong>
            <span><?= date('d/m/Y', strtotime($pesquisa['data_pesquisa'])) ?></span>
        </div>
        <div class="info-card">
            <strong>Status</strong>
            <span><span class="badge" style="background: <?= $pesquisa['status'] === 'ativa' ? '#c8e6c9; color: #1b5e20' : '#ffccbc; color: #bf360c' ?>"><?= ucfirst($pesquisa['status']) ?></span></span>
        </div>
        <div class="info-card">
            <strong>Data de Criação</strong>
            <span><?= date('d/m/Y H:i', strtotime($pesquisa['data_criacao'])) ?></span>
        </div>
        <div class="info-card">
            <strong>Status para Cliente</strong>
            <span><span class="badge" style="background: <?= ($pesquisa['liberado_cliente'] ?? 'N') === 'S' ? '#c8e6c9; color: #1b5e20' : '#ffccbc; color: #bf360c' ?>">
                <?= ($pesquisa['liberado_cliente'] ?? 'N') === 'S' ? '✓ Liberado' : '✕ Bloqueado' ?>
            </span></span>
        </div>
        <!-- Adicionado nota e qualificação no card -->
        <div class="info-card">
            <strong>Nota Média</strong>
            <span><?= number_format($nota_media, 2, ',', '.') ?></span>
        </div>
        <div class="info-card">
            <strong>Classificação Média</strong>
            <span class="badge" style="background-color: <?= $cor_media ?>; color: white;">
                <?= htmlspecialchars($classificacao_media) ?>
            </span>
        </div>
    </div>
    
    <div class="status-chart">
        <div class="status-chart-header">
            <div class="status-chart-title">📊 Questionários por Status</div>
            <div class="status-chart-total">Total: <strong><?= $total_questionarios ?></strong></div>
        </div>
        <div class="status-chart-canvas-wrapper">
            <canvas id="statusBarChart"></canvas>
        </div>
    </div>

    <div style="margin: 20px 0; display: flex; gap: 10px; flex-wrap: wrap;">
        <?php if ($pode_gerenciar_empresa): ?>
            <button type="button" class="btn btn-add-company" onclick="abrirModalCadastrarEmpresa()">🏢 Cadastrar Empresa</button>
        <?php endif; ?>
        <?php if (($pesquisa['liberado_cliente'] ?? 'N') === 'S'): ?>
            <form method="POST" action="processar_liberar_cliente.php" style="margin: 0;">
                <input type="hidden" name="id_pesquisa" value="<?= $id_pesquisa ?>">
                <input type="hidden" name="acao" value="bloquear">
                <button type="submit" class="button" style="background: #ff9800; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;">🔒 Bloquear Cliente</button>
            </form>
        <?php else: ?>
            <form method="POST" action="processar_liberar_cliente.php" style="margin: 0;">
                <input type="hidden" name="id_pesquisa" value="<?= $id_pesquisa ?>">
                <input type="hidden" name="acao" value="liberar">
                <button type="submit" class="button" style="background: #4CAF50; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em;">🔓 Liberar para Cliente</button>
            </form>
        <?php endif; ?>
        <a href="pesquisas.php" class="button" style="background: #6c757d; color: white; padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9em; text-decoration: none; display: inline-block;">← Voltar</a>
    </div>
    
    <h2>🏢 Empresas</h2>
    
    <!-- Filtros -->
    <div style="background: #f8f9fa; padding: 20px; border-radius: 8px; margin-bottom: 20px; border: 1px solid #e0e0e0;">
        <form method="GET" class="filter-form" style="display: flex; gap: 8px; align-items: flex-end; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 10px;">
            <input type="hidden" name="id" value="<?= $id_pesquisa ?>">
            
            <!-- Pesquisar por ID -->
            <div style="flex: 0 0 60px;">
                <label for="filtro_id" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">🆔 ID:</label>
                <input type="text" id="filtro_id" name="filtro_id" placeholder="ID"
                       value="<?= htmlspecialchars($filtro_id) ?>"
                       style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em;">
            </div>
            
            <!-- Filtro de Empresa -->
            <div style="flex: 1; min-width: 180px;">
                <label for="filtro_empresa" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">🏢 Empresa:</label>
                <input type="text" id="filtro_empresa" name="filtro_empresa" 
                       placeholder="Nome..." 
                       value="<?= htmlspecialchars($filtro_empresa) ?>"
                       style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em;">
            </div>
            
            <!-- Filtro de Status -->
            <div style="flex: 0 0 130px;">
                <label for="status_filtro" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">📌 Status:</label>
                <select id="status_filtro" name="status_filtro" style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="">-- Todos --</option>
                    <?php 
                    $status_list->data_seek(0);
                    while($status = $status_list->fetch_assoc()): 
                    ?>
                        <option value="<?= $status['id_status'] ?>" <?= $filtro_status == $status['id_status'] ? 'selected' : '' ?>>
                            <?= htmlspecialchars($status['nome_status']) ?>
                        </option>
                    <?php endwhile; ?>
                </select>
            </div>

            <!-- UF -->
            <div style="flex: 0 0 65px;">
                <label for="filtro_uf" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">🗺️ UF:</label>
                <select id="filtro_uf" name="filtro_uf" style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="">Todas</option>
                    <?php 
                    $ufs = ['AC','AL','AP','AM','BA','CE','DF','ES','GO','MA','MT','MS','MG','PA','PB','PR','PE','PI','RJ','RN','RS','RO','RR','SC','SP','SE','TO'];
                    foreach ($ufs as $uf):
                    ?>
                        <option value="<?= $uf ?>" <?= $filtro_uf === $uf ? 'selected' : '' ?>><?= $uf ?></option>
                    <?php endforeach; ?>
                </select>
            </div>

            <!-- Faixa de Funcionários -->
            <div style="flex: 0 0 100px;">
                <label for="filtro_funcionarios" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">👥 Func:</label>
                <select id="filtro_funcionarios" name="filtro_funcionarios"
                    style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="">Todas</option>
                    <?php foreach ($faixas as $faixa): ?>
                        <option value="<?= $faixa['quantidade_minima'] ?>-<?= $faixa['quantidade_maxima'] ?>" 
                                <?= $filtro_funcionarios == ($faixa['quantidade_minima'] . '-' . $faixa['quantidade_maxima']) ? 'selected' : '' ?>>
                            <?= htmlspecialchars($faixa['quantidade_minima']) ?>-<?= htmlspecialchars($faixa['quantidade_maxima']) ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>

            <!-- Filtro por quantidade de contatos -->
            <div style="flex: 0 0 120px;">
                <label for="filtro_qtd_contatos" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">📇 Contatos:</label>
                <select id="filtro_qtd_contatos" name="filtro_qtd_contatos"
                    style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="">Todos</option>
                    <option value="0" <?= $filtro_qtd_contatos === '0' ? 'selected' : '' ?>>0</option>
                    <option value="1-5" <?= $filtro_qtd_contatos === '1-5' ? 'selected' : '' ?>>1 a 5</option>
                    <option value="6-10" <?= $filtro_qtd_contatos === '6-10' ? 'selected' : '' ?>>6 a 10</option>
                    <option value="11+" <?= $filtro_qtd_contatos === '11+' ? 'selected' : '' ?>>11+</option>
                </select>
            </div>

            <!-- Data de Retorno Agendado -->
            <div style="flex: 0 0 130px;">
                <label for="filtro_data_retorno_agendado" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">📅 Retorno:</label>
                <input type="date" id="filtro_data_retorno_agendado" name="filtro_data_retorno_agendado"
                    value="<?= htmlspecialchars($filtro_data_retorno_agendado) ?>"
                    style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em;">
            </div>

            <!-- Base (idbase) -->
            <div style="flex: 0 0 180px;">
                <label for="filtro_base" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">🗂️ Base:</label>
                <select id="filtro_base" name="filtro_base" style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="">Todas</option>
                    <?php foreach ($bases_disponiveis as $base): ?>
                        <option value="<?= (int)$base['idbase'] ?>" <?= $filtro_base === (int)$base['idbase'] ? 'selected' : '' ?>>
                            <?= htmlspecialchars($base['nome_base']) ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
            
            <!-- Registros por Página -->
            <div style="flex: 0 0 80px;">
                <label for="registros_por_pagina" style="display: block; font-weight: bold; margin-bottom: 3px; font-size: 0.8em;">📊 Pág:</label>
                <select id="registros_por_pagina" name="registros_por_pagina" onchange="document.querySelector('.filter-form').submit()" style="width: 100%; padding: 6px; border: 1px solid #ccc; border-radius: 4px; font-size: 0.85em; background-color: white;">
                    <option value="5" <?= $registros_por_pagina == 5 ? 'selected' : '' ?>>5</option>
                    <option value="10" <?= $registros_por_pagina == 10 ? 'selected' : '' ?>>10</option>
                    <option value="20" <?= $registros_por_pagina == 20 ? 'selected' : '' ?>>20</option>
                    <option value="50" <?= $registros_por_pagina == 50 ? 'selected' : '' ?>>50</option>
                    <option value="100" <?= $registros_por_pagina == 100 ? 'selected' : '' ?>>100</option>
                </select>
            </div>
            
            <!-- Botões -->
            <div style="display: flex; gap: 6px; flex-shrink: 0;">
                <button type="submit" class="btn" style="margin: 0; padding: 6px 12px; font-size: 0.85em;">🔍</button>
                <button type="button" onclick="limparFiltros()" class="btn btn-secondary" style="margin: 0; padding: 6px 12px; font-size: 0.85em;">✕</button>
            </div>
        </form>
    </div>
    
    <?php if ($empresas->num_rows > 0): ?>
        <?php 
        // Reiniciar o resultado
        $empresas->data_seek(0);
        ?>
        <?php while($empresa = $empresas->fetch_assoc()): ?>
        <div class="empresa-card">
            <div class="empresa-header" onclick="toggleContatos(this)">
                <div style="flex: 1;">
                    <div style="font-size: 1.1em; margin-bottom: 5px;">
                        🏢 <?= htmlspecialchars($empresa['NOME_FANTASIA'] ?? 'Empresa Deletada') ?>
                        <span style="font-size: 0.75em; color: #666;">(ID: <?= $empresa['id'] ?>)</span>
                    </div>
                    <small style="color: #666; font-weight: normal; display: block;">
                        <?= htmlspecialchars($empresa['EMPRESA'] ?? '-') ?>
                    </small>
                </div>
                <div style="display: flex; align-items: center; gap: 15px;">
                    <div style="text-align: right; display: flex; align-items: center; gap: 10px;">
                        <span class="contatos-count-badge">Contatos: <?= (int)($empresa['total_contatos'] ?? 0) ?></span>
                        <button
                            type="button"
                            class="btn-contatos-modal"
                            onclick="abrirModalContatos(event, <?= (int)$empresa['ID_EMPRESA'] ?>, <?= (int)$empresa['id'] ?>, <?= htmlspecialchars(json_encode((string)($empresa['NOME_FANTASIA'] ?? 'Empresa')), ENT_QUOTES, 'UTF-8') ?>)"
                        >👁️ Contatos</button>
                        <div style="text-align: right; margin-right: 5px;">
                            <div style="font-size: 0.7em; color: #666; font-weight: normal; text-transform: uppercase;">Nota</div>
                            <div style="font-weight: bold; font-size: 0.95em; color: #004d99;"><?= number_format($empresa['nota_total'] ?? 0, 2, ',', '.') ?></div>
                        </div>
                        <span class="badge" style="background-color: <?= $empresa['cor_classificacao'] ?? '#cccccc' ?>; color: white; min-width: 80px; text-align: center;">
                            <?= htmlspecialchars($empresa['classificacao'] ?? '-') ?>
                        </span>
                        <?php if ($empresa['id_status_questionario_fk']): ?>
                            <span class="badge badge-pendente">
                                <?= htmlspecialchars($empresa['status_questionario']) ?>
                            </span>
                        <?php endif; ?>
                    </div>
                    <span style="font-size: 1.2em;">▼</span>
                </div>
            </div>
            
            <div class="contatos-list">
                <div class="contato-item" style="border-left-color:#6c757d;">
                    <div class="contato-nome">📌 Dados da Pesquisa</div>
                    <div class="contato-info">
                        Responsável: <?= htmlspecialchars($empresa['responsavel_pesquisa'] ?? '-') ?><br>
                        Status do Questionário: <?= htmlspecialchars($empresa['status_questionario'] ?? '-') ?><br>
                        Respondida em: <?= $empresa['data_resposta'] ? date('d/m/Y H:i', strtotime($empresa['data_resposta'])) : '-' ?>
                    </div>
                </div>
                <?php if (!empty($empresa['observacoes_internas'])): ?>
                <div class="contato-item" style="border-left-color:#ff9800;">
                    <div class="contato-nome">📝 Observação Interna</div>
                    <div class="contato-info"><?= nl2br(htmlspecialchars($empresa['observacoes_internas'])) ?></div>
                </div>
                <?php endif; ?>
                <?php 
                // Buscar contatos da pesquisa
                $stmt_contatos = $conn->prepare("SELECT pc.* FROM pesquisa_contatos pc WHERE pc.id_pesquisa_empresa_fk = ?");
                $stmt_contatos->bind_param('i', $empresa['id']);
                $stmt_contatos->execute();
                $contatos = $stmt_contatos->get_result();
                
                if ($contatos->num_rows > 0):
                ?>
                <strong>Contatos:</strong>
                <?php while($contato = $contatos->fetch_assoc()): ?>
                <div class="contato-item">
                    <div class="contato-nome">📧 <?= htmlspecialchars($contato['nome']) ?></div>
                    <div class="contato-info">
                        <?php if ($contato['email']): ?>
                        Email: <?= htmlspecialchars($contato['email']) ?><br>
                        <?php endif; ?>
                        <?php if ($contato['telefone']): ?>
                        Telefone: <?= htmlspecialchars($contato['telefone']) ?><br>
                        <?php endif; ?>
                        <?php if ($contato['area']): ?>
                        Área: <?= htmlspecialchars($contato['area']) ?>
                        <?php endif; ?>
                    </div>
                </div>
                <?php endwhile; ?>
                <?php else: ?>
                <div style="color: #999; font-style: italic;">Nenhum contato cadastrado para esta empresa</div>
                <?php endif; ?>
                
                <div style="margin-top: 15px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap;">
                    <a href="responder_pesquisa.php?id=<?= $empresa['id'] ?>" class="btn btn-small">
                        <?= $empresa['status'] === 'pendente' ? '📝 Responder Pesquisa' : '👁️ Visualizar Respostas' ?>
                    </a>
                    <button type="button" class="btn btn-small" style="background-color: #7c3aed;" onclick="gerarResumoIA(<?= $empresa['id'] ?>, this)">
                        🤖 Resumo por IA
                    </button>
                </div>
                <div id="resumo-ia-<?= $empresa['id'] ?>" class="resumo-ia-box" style="display: none; margin-top: 10px;">
                    <div class="resumo-ia-loading" style="display: none; text-align: center; padding: 12px; color: #7c3aed;">
                        <span style="animation: pulse 1.2s infinite;">⏳</span> Gerando resumo...
                    </div>
                    <div class="resumo-ia-content" style="display: none; background: #f5f0ff; border: 1px solid #ddd6fe; border-left: 4px solid #7c3aed; border-radius: 6px; padding: 12px; font-size: 0.9em; line-height: 1.6; color: #333;">
                    </div>
                    <div class="resumo-ia-erro" style="display: none; background: #fef2f2; border: 1px solid #fecaca; border-left: 4px solid #ef4444; border-radius: 6px; padding: 12px; font-size: 0.85em; color: #991b1b;">
                    </div>
                </div>
            </div>
        </div>
        <?php endwhile; ?>
    <?php else: ?>
    <div class="empty-state">
        <div class="empty-state-icon">🏢</div>
        <h3>Nenhuma empresa associada</h3>
        <p>Nenhuma empresa foi encontrada para esta pesquisa.</p>
    </div>
    <?php endif; ?>
    
    <!-- Paginação -->
    <?php if ($total_registros > 0): ?>
    <div class="pagination-info">
        Exibindo 
        <strong><?= ($offset + 1) ?></strong> 
        a 
        <strong><?= min($offset + $registros_por_pagina, $total_registros) ?></strong> 
        de 
        <strong><?= $total_registros ?></strong> 
        empresa(s)
    </div>
    
    <?php if ($total_paginas > 1): ?>
    <div class="pagination">
        <?php 
        $url_params_base = "id=$id_pesquisa&registros_por_pagina=$registros_por_pagina" .
            "&status_filtro=$filtro_status" .
            "&filtro_id=" . urlencode($filtro_id) .
            "&filtro_empresa=" . urlencode($filtro_empresa) .
            "&filtro_uf=$filtro_uf" .
            "&filtro_funcionarios=" . urlencode($filtro_funcionarios) .
            "&filtro_qtd_contatos=" . urlencode($filtro_qtd_contatos) .
            "&filtro_base=" . urlencode($filtro_base) .
            "&filtro_porte=" . urlencode($filtro_porte) .
            "&filtro_cnae=" . urlencode($filtro_cnae) .
            "&filtro_data_retorno_agendado=" . urlencode($filtro_data_retorno_agendado);
        // Botão Anterior
        if ($pagina_atual > 1) {
            echo '<a href="visualizar_pesquisa.php?' . $url_params_base . '&pagina=' . ($pagina_atual - 1) . '">← Anterior</a>';
        } else {
            echo '<span class="disabled">← Anterior</span>';
        }
        
        // Números de páginas
        $inicio_paginas = max(1, $pagina_atual - 2);
        $fim_paginas = min($total_paginas, $pagina_atual + 2);
        
        if ($inicio_paginas > 1) {
            echo '<a href="visualizar_pesquisa.php?' . $url_params_base . '&pagina=1">1</a>';
            if ($inicio_paginas > 2) {
                echo '<span>...</span>';
            }
        }
        
        for ($p = $inicio_paginas; $p <= $fim_paginas; $p++) {
            if ($p === $pagina_atual) {
                echo '<span class="active">' . $p . '</span>';
            } else {
                echo '<a href="visualizar_pesquisa.php?' . $url_params_base . '&pagina=' . $p . '">' . $p . '</a>';
            }
        }
        
        if ($fim_paginas < $total_paginas) {
            if ($fim_paginas < $total_paginas - 1) {
                echo '<span>...</span>';
            }
            echo '<a href="visualizar_pesquisa.php?' . $url_params_base . '&pagina=' . $total_paginas . '">' . $total_paginas . '</a>';
        }
        
        // Botão Próximo
        if ($pagina_atual < $total_paginas) {
            echo '<a href="visualizar_pesquisa.php?' . $url_params_base . '&pagina=' . ($pagina_atual + 1) . '">Próximo →</a>';
        } else {
            echo '<span class="disabled">Próximo →</span>';
        }
        ?>
    </div>
    <?php endif; ?>
    <?php endif; ?>
    
    <br>
    <a href="pesquisas.php" class="btn btn-secondary">← Voltar às Pesquisas</a>
</div>

<?php if ($pode_gerenciar_empresa): ?>
<div id="modal-cadastrar-empresa" style="display:none; position:fixed; inset:0; background:rgba(0,0,0,0.55); z-index:999; align-items:center; justify-content:center; padding:16px;">
    <div style="width:100%; max-width:760px; max-height:90vh; background:#fff; border-radius:10px; overflow:hidden; box-shadow:0 10px 35px rgba(0,0,0,.25); display:flex; flex-direction:column;">
        <div style="background:#1565c0; color:#fff; padding:10px 14px; display:flex; justify-content:space-between; align-items:center;">
            <h3 style="margin:0; font-size:1.1em;">🏢 Cadastrar Empresa na Pesquisa</h3>
            <button type="button" onclick="fecharModalCadastrarEmpresa()" style="background:transparent; color:#fff; border:0; font-size:1.2em; cursor:pointer;">✖</button>
        </div>
        <form method="POST" style="display:flex; flex-direction:column; min-height:0;">
            <input type="hidden" name="acao" value="cadastrar_empresa_pesquisa">
            <div style="padding:12px 14px; overflow:auto; min-height:0;">
                <div style="font-size:.83em; font-weight:bold; color:#1565c0; margin-bottom:6px;">Dados principais</div>
                <div style="display:grid; grid-template-columns:170px 1fr; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">CNPJ *</label>
                        <input type="text" id="empresa-cnpj" name="cnpj" required maxlength="30" placeholder="00.000.000/0000-00" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Nome Fantasia *</label>
                        <input type="text" id="empresa-nome-fantasia" name="nome_fantasia" required maxlength="255" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>
                <div style="display:grid; grid-template-columns:1.2fr 1fr 90px; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Razão Social</label>
                        <input type="text" name="razao_social" maxlength="255" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Cidade</label>
                        <input type="text" name="cidade" maxlength="120" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">UF</label>
                        <input type="text" name="uf" maxlength="2" placeholder="SP" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>

                <div style="font-size:.83em; font-weight:bold; color:#1565c0; margin:4px 0 6px;">Contato e classificação</div>
                <div style="display:grid; grid-template-columns:70px 135px 110px 1fr; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">DDD</label>
                        <input type="text" name="ddd" maxlength="3" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Telefone</label>
                        <input type="text" name="telefone" maxlength="30" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">CNAE</label>
                        <input type="text" name="cnae" maxlength="80" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Site</label>
                        <input type="text" name="site" maxlength="255" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>
                <div style="display:grid; grid-template-columns:1fr 1fr; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Funcionários</label>
                        <input type="text" name="funcionarios" maxlength="50" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Porte</label>
                        <input type="text" name="porte" maxlength="50" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>

                <div style="font-size:.83em; font-weight:bold; color:#1565c0; margin:4px 0 6px;">Endereço</div>
                <div style="display:grid; grid-template-columns:1.4fr 90px 1fr; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Rua</label>
                        <input type="text" name="rua" maxlength="150" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Número</label>
                        <input type="text" name="numero" maxlength="20" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Complemento</label>
                        <input type="text" name="complemento" maxlength="60" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>
                <div style="display:grid; grid-template-columns:1fr 120px; gap:8px;">
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">Bairro</label>
                        <input type="text" name="bairro" maxlength="80" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                    <div style="margin-bottom:8px;">
                        <label style="display:block; font-weight:bold; margin-bottom:6px; color:#444;">CEP</label>
                        <input type="text" name="cep" maxlength="12" placeholder="00000-000" style="width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;">
                    </div>
                </div>
            </div>
            <div style="display:flex; justify-content:flex-end; gap:8px; padding:10px 14px; border-top:1px solid #eee; background:#fafafa;">
                <button type="button" class="btn btn-secondary" onclick="fecharModalCadastrarEmpresa()">Cancelar</button>
                <button type="submit" class="btn btn-add-company">Salvar e Vincular</button>
            </div>
        </form>
    </div>
</div>
<?php endif; ?>

<div class="modal-contatos-overlay" id="modal-contatos-overlay">
    <div class="modal-contatos">
        <div class="modal-contatos-header">
            <h3 id="modal-contatos-titulo" style="margin:0; font-size:1em;">Contatos</h3>
            <button type="button" onclick="fecharModalContatos()" style="background:transparent; color:#fff; border:0; font-size:1.2em; cursor:pointer;">✖</button>
        </div>
        <div class="modal-contatos-body" id="modal-contatos-body">
            <div style="color:#666;">Carregando contatos...</div>
        </div>
    </div>
</div>

<script>
    // Gráfico de Colunas - Status e Participação
    (function() {
        const labels = <?= json_encode(array_keys($status_totais)) ?>;
        const valores = <?= json_encode(array_values($status_totais)) ?>;
        const total = valores.reduce((a, b) => a + b, 0);
        const participacao = valores.map(v => total > 0 ? parseFloat(((v / total) * 100).toFixed(1)) : 0);

        const cores = [
            '#004d99', '#ffcc80', '#81c784', '#ffab91', '#90caf9',
            '#ce93d8', '#80deea', '#fff59d', '#f48fb1', '#a5d6a7'
        ];

        const ctx = document.getElementById('statusBarChart').getContext('2d');
        new Chart(ctx, {
            type: 'bar',
            data: {
                labels: labels,
                datasets: [{
                    label: 'Participação (%)',
                    data: participacao,
                    backgroundColor: cores.slice(0, labels.length),
                    borderColor: cores.slice(0, labels.length).map(c => c),
                    borderWidth: 1,
                    borderRadius: 6,
                    maxBarThickness: 80
                }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                        beginAtZero: true,
                        max: 100,
                        ticks: {
                            callback: function(value) { return value + '%'; },
                            font: { size: 12 }
                        },
                        title: {
                            display: true,
                            text: 'Participação (%)',
                            font: { size: 13, weight: 'bold' },
                            color: '#004d99'
                        },
                        grid: { color: '#e9ecef' }
                    },
                    x: {
                        ticks: { font: { size: 12 } },
                        grid: { display: false }
                    }
                },
                plugins: {
                    legend: { display: false },
                    tooltip: {
                        callbacks: {
                            label: function(context) {
                                const idx = context.dataIndex;
                                return valores[idx] + ' questionário(s) — ' + context.parsed.y + '%';
                            }
                        }
                    }
                }
            },
            plugins: [{
                id: 'barLabels',
                afterDatasetsDraw: function(chart) {
                    const ctx2 = chart.ctx;
                    chart.data.datasets.forEach(function(dataset, i) {
                        const meta = chart.getDatasetMeta(i);
                        meta.data.forEach(function(bar, index) {
                            const pct = dataset.data[index];
                            const qty = valores[index];
                            ctx2.save();
                            ctx2.fillStyle = '#333';
                            ctx2.font = 'bold 12px Arial';
                            ctx2.textAlign = 'center';
                            ctx2.fillText(pct + '%', bar.x, bar.y - 8);
                            ctx2.font = '11px Arial';
                            ctx2.fillStyle = '#666';
                            ctx2.fillText('(' + qty + ')', bar.x, bar.y - 22);
                            ctx2.restore();
                        });
                    });
                }
            }]
        });
    })();

    function toggleContatos(element) {
        const contatosList = element.nextElementSibling;
        contatosList.classList.toggle('show');
        
        // Rotacionar a seta
        const arrow = element.querySelector('span:last-child');
        if (arrow) {
            arrow.style.transform = contatosList.classList.contains('show') ? 'rotate(180deg)' : 'rotate(0deg)';
            arrow.style.transition = 'transform 0.3s';
        }
    }

    function escapeHtml(text) {
        var div = document.createElement('div');
        div.appendChild(document.createTextNode(text == null ? '' : String(text)));
        return div.innerHTML;
    }

    function abrirModalContatos(event, idEmpresa, idPesquisaEmpresa, nomeEmpresa) {
        if (event) {
            event.preventDefault();
            event.stopPropagation();
        }

        const overlay = document.getElementById('modal-contatos-overlay');
        const titulo = document.getElementById('modal-contatos-titulo');
        const body = document.getElementById('modal-contatos-body');
        if (!overlay || !titulo || !body) return;

        titulo.textContent = 'Contatos - ' + (nomeEmpresa || 'Empresa');
        body.innerHTML = '<div style="color:#666;">Carregando contatos...</div>';
        overlay.style.display = 'flex';

        fetch('listar_contatos.php?id_empresa=' + encodeURIComponent(idEmpresa) + '&id_pesquisa_empresa=' + encodeURIComponent(idPesquisaEmpresa))
            .then(function(response) { return response.json(); })
            .then(function(data) {
                if (!data.success || !Array.isArray(data.contatos) || data.contatos.length === 0) {
                    body.innerHTML = '<div style="color:#666;">Nenhum contato encontrado.</div>';
                    return;
                }

                let html = '';
                data.contatos.forEach(function(c) {
                    html += '<div class="modal-contato-item">';
                    html += '<div><strong>' + escapeHtml(c.nome || '') + ' ' + escapeHtml(c.sobrenome || '') + '</strong></div>';
                    html += '<div style="font-size:0.9em; color:#555; margin-top:4px;">';
                    html += 'Cargo: ' + escapeHtml(c.cargo || '-') + ' | Área: ' + escapeHtml(c.depto || '-') + '<br>';
                    html += 'Status: ' + escapeHtml(c.status_contato_nome || '-') + '<br>';
                    html += 'Telefone: ' + escapeHtml(c.telefone || '-') + ' | Celular: ' + escapeHtml(c.celular || '-') + '<br>';
                    html += 'Email: ' + escapeHtml(c.email || '-');
                    html += '</div>';
                    html += '</div>';
                });
                body.innerHTML = html;
            })
            .catch(function(error) {
                body.innerHTML = '<div style="color:#b71c1c;">Erro ao carregar contatos: ' + escapeHtml(error.message || '') + '</div>';
            });
    }

    function fecharModalContatos() {
        const overlay = document.getElementById('modal-contatos-overlay');
        if (overlay) overlay.style.display = 'none';
    }

    function abrirModalCadastrarEmpresa() {
        const modal = document.getElementById('modal-cadastrar-empresa');
        if (!modal) return;
        const campos = modal.querySelectorAll('input[type="text"], input[type="email"], input[type="number"], textarea');
        campos.forEach(function(campo) { campo.value = ''; });
        modal.style.display = 'flex';
    }

    function fecharModalCadastrarEmpresa() {
        const modal = document.getElementById('modal-cadastrar-empresa');
        if (modal) modal.style.display = 'none';
    }

    window.addEventListener('click', function(event) {
        const overlayContatos = document.getElementById('modal-contatos-overlay');
        if (overlayContatos && event.target === overlayContatos) {
            fecharModalContatos();
        }
        const modal = document.getElementById('modal-cadastrar-empresa');
        if (modal && event.target === modal) {
            fecharModalCadastrarEmpresa();
        }
    });

    function gerarResumoIA(idPesquisaEmpresa, btn) {
        const container = document.getElementById('resumo-ia-' + idPesquisaEmpresa);
        if (!container) return;

        const loading = container.querySelector('.resumo-ia-loading');
        const content = container.querySelector('.resumo-ia-content');
        const erro = container.querySelector('.resumo-ia-erro');

        // Se já tem conteúdo visível, toggle
        if (content.style.display === 'block') {
            container.style.display = 'none';
            content.style.display = 'none';
            return;
        }

        container.style.display = 'block';
        loading.style.display = 'block';
        content.style.display = 'none';
        erro.style.display = 'none';
        btn.disabled = true;
        btn.textContent = '⏳ Gerando...';

        fetch('gerar_resumo_ia.php?id=' + idPesquisaEmpresa)
        .then(function(response) { return response.json(); })
        .then(function(data) {
            loading.style.display = 'none';
            btn.disabled = false;
            btn.textContent = '🤖 Resumo por IA';

            if (data.success) {
                content.innerHTML = '<strong style="color: #7c3aed; display: block; margin-bottom: 6px;">🤖 Resumo por IA</strong>' + data.resumo.replace(/\n/g, '<br>');
                content.style.display = 'block';
            } else {
                erro.textContent = '❌ ' + data.message;
                erro.style.display = 'block';
            }
        })
        .catch(function(error) {
            loading.style.display = 'none';
            btn.disabled = false;
            btn.textContent = '🤖 Resumo por IA';
            erro.textContent = '❌ Erro de conexão: ' + error.message;
            erro.style.display = 'block';
        });
    }
</script>

<style>
    @keyframes pulse {
        0%, 100% { opacity: 1; }
        50% { opacity: 0.4; }
    }
</style>

</body>
</html>
