<?php
session_start();

// Verificar se o usuário está logado
if (!isset($_SESSION['logado'])) {
    header('Location: login.php');
    exit;
}

require_once 'conexao.php';

$respostaId = (int)$_GET['id'];

// Obter o tenant_id do usuário logado
$tenant_id = $_SESSION['tenant_id'] ?? null;

// Buscar o nome da empresa (tenant) no banco de dados
if ($tenant_id) {
    $sql_tenant = "SELECT nome FROM tenants WHERE id = ?";
    $stmt_tenant = $conn->prepare($sql_tenant);
    $stmt_tenant->bind_param("i", $tenant_id);
    $stmt_tenant->execute();
    $result_tenant = $stmt_tenant->get_result();

    if ($result_tenant->num_rows > 0) {
        $tenant = $result_tenant->fetch_assoc();
        $nome_empresa = $tenant['nome'];
    }
    $stmt_tenant->close();
}

// Buscar resposta do formulário
$sqlResposta = "SELECT rf.*, f.nome as formulario_nome 
               FROM respostas_formulario rf
               JOIN formularios f ON rf.formulario_id = f.id
               WHERE rf.id = ?";
$stmtResposta = $conn->prepare($sqlResposta);
$stmtResposta->bind_param("i", $respostaId);
$stmtResposta->execute();
$resposta = $stmtResposta->get_result()->fetch_assoc();
$stmtResposta->close();

// Buscar nome do cliente
$nome_cliente = 'Formulário não vinculado a um cliente';
if (isset($resposta['cliente_id']) && !empty($resposta['cliente_id'])) {
    $clienteId = (int)$resposta['cliente_id'];
    $sql_cliente = "SELECT Nome_Cliente FROM clientes WHERE id = ? AND tenant_id = ?";
    $stmt_cliente = $conn->prepare($sql_cliente);
    $stmt_cliente->bind_param("ii", $clienteId, $tenant_id);
    $stmt_cliente->execute();
    $result_cliente = $stmt_cliente->get_result();
    
    if ($result_cliente->num_rows > 0) {
        $cliente = $result_cliente->fetch_assoc();
        $nome_cliente = $cliente['Nome_Cliente'] ?? 'Nome não encontrado';
    }
    $stmt_cliente->close();
}

// Buscar TODAS as perguntas do formulário com suas respostas
$sqlTodasPerguntas = "
SELECT 
    p.*,
    GROUP_CONCAT(
        DISTINCT CASE 
            WHEN r.opcao_id IS NOT NULL THEN orp.texto
            WHEN r.resposta_texto IS NOT NULL AND r.resposta_texto != '' THEN r.resposta_texto
            ELSE NULL
        END SEPARATOR '|'
    ) AS respostas
FROM perguntas p
LEFT JOIN respostas r 
    ON p.id = r.pergunta_id AND r.resposta_formulario_id = ?
LEFT JOIN opcoes_resposta orp 
    ON r.opcao_id = orp.id
WHERE p.formulario_id = ?
GROUP BY p.id
ORDER BY p.ordem, p.id";

$stmtTodasPerguntas = $conn->prepare($sqlTodasPerguntas);
$stmtTodasPerguntas->bind_param("ii", $respostaId, $resposta['formulario_id']);
$stmtTodasPerguntas->execute();
$todasPerguntas = $stmtTodasPerguntas->get_result()->fetch_all(MYSQLI_ASSOC);
$stmtTodasPerguntas->close();

// Buscar TODAS as opções selecionadas
$sqlOpcoesSelecionadas = "
SELECT DISTINCT r.opcao_id 
FROM respostas r
WHERE r.resposta_formulario_id = ? AND r.opcao_id IS NOT NULL";
$stmtOpcoes = $conn->prepare($sqlOpcoesSelecionadas);
$stmtOpcoes->bind_param("i", $respostaId);
$stmtOpcoes->execute();
$opcoesSelecionadas = $stmtOpcoes->get_result()->fetch_all(MYSQLI_ASSOC);
$stmtOpcoes->close();

// Criar array simples de opções selecionadas
$opcoesSelecionadasIds = [];
foreach ($opcoesSelecionadas as $opcao) {
    $opcoesSelecionadasIds[] = $opcao['opcao_id'];
}

// FUNÇÃO PARA CONSTRUIR HIERARQUIA SEM DUPLICAÇÕES
function construirHierarquiaPerguntas($perguntas, $opcoesSelecionadasIds) {
    $perguntasOrdenadas = [];
    $perguntasProcessadas = []; // Para evitar duplicações
    
    // Primeiro: perguntas principais (sem parent)
    foreach ($perguntas as $pergunta) {
        if ($pergunta['parent_resposta_id'] === null && !in_array($pergunta['id'], $perguntasProcessadas)) {
            $pergunta['nivel'] = 0;
            $perguntasOrdenadas[] = $pergunta;
            $perguntasProcessadas[] = $pergunta['id'];
            
            // Buscar condicionais de nível 1 para esta pergunta principal
            $condicionaisNivel1 = array_filter($perguntas, function($p) use ($pergunta, $opcoesSelecionadasIds, $perguntasProcessadas) {
                return $p['parent_resposta_id'] !== null && 
                       !in_array($p['id'], $perguntasProcessadas) &&
                       in_array($p['parent_resposta_id'], $opcoesSelecionadasIds);
            });
            
            foreach ($condicionaisNivel1 as $condicional1) {
                if (!in_array($condicional1['id'], $perguntasProcessadas)) {
                    $condicional1['nivel'] = 1;
                    $perguntasOrdenadas[] = $condicional1;
                    $perguntasProcessadas[] = $condicional1['id'];
                    
                    // Buscar condicionais de nível 2 para esta condicional de nível 1
                    $condicionaisNivel2 = array_filter($perguntas, function($p) use ($condicional1, $opcoesSelecionadasIds, $perguntasProcessadas) {
                        return $p['parent_resposta_id'] !== null && 
                               !in_array($p['id'], $perguntasProcessadas) &&
                               in_array($p['parent_resposta_id'], $opcoesSelecionadasIds);
                    });
                    
                    foreach ($condicionaisNivel2 as $condicional2) {
                        if (!in_array($condicional2['id'], $perguntasProcessadas)) {
                            $condicional2['nivel'] = 2;
                            $perguntasOrdenadas[] = $condicional2;
                            $perguntasProcessadas[] = $condicional2['id'];
                            
                            // Buscar condicionais de nível 3 (máximo 3 níveis para evitar loops)
                            $condicionaisNivel3 = array_filter($perguntas, function($p) use ($condicional2, $opcoesSelecionadasIds, $perguntasProcessadas) {
                                return $p['parent_resposta_id'] !== null && 
                                       !in_array($p['id'], $perguntasProcessadas) &&
                                       in_array($p['parent_resposta_id'], $opcoesSelecionadasIds);
                            });
                            
                            foreach ($condicionaisNivel3 as $condicional3) {
                                if (!in_array($condicional3['id'], $perguntasProcessadas)) {
                                    $condicional3['nivel'] = 3;
                                    $perguntasOrdenadas[] = $condicional3;
                                    $perguntasProcessadas[] = $condicional3['id'];
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    // Adicionar perguntas que não foram processadas (fallback)
    foreach ($perguntas as $pergunta) {
        if (!in_array($pergunta['id'], $perguntasProcessadas)) {
            $pergunta['nivel'] = $pergunta['parent_resposta_id'] ? 1 : 0;
            $perguntasOrdenadas[] = $pergunta;
            $perguntasProcessadas[] = $pergunta['id'];
        }
    }
    
    return $perguntasOrdenadas;
}

// Construir hierarquia
$perguntas = construirHierarquiaPerguntas($todasPerguntas, $opcoesSelecionadasIds);

// Exibir mensagens apenas em requisições não-AJAX
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['ajax'])) {
    if (isset($_SESSION['mensagem'])) {
        echo '<div class="mensagem-flutuante" id="mensagemFlutuante">'
           . htmlspecialchars($_SESSION['mensagem'])
           . '</div>';
        
        unset($_SESSION['mensagem']);
        
        echo '<script>
                setTimeout(function() {
                    const msg = document.getElementById("mensagemFlutuante");
                    if (msg) msg.style.display = "none";
                }, 3000);
              </script>';
    }
}
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SON - Visualizar Formulário Respondido</title>
    <meta name="csrf-token" content="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    
    <!-- Bibliotecas para PDF -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js"></script>
    
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
        }

        .header-fixed {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            background-color: #f5f5f5;
            padding: 15px 20px;
            z-index: 1000;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        
        .header-fixed img {
            height: 50px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        .sidebar {
            position: fixed;
            top: 80px;
            left: 0;
            bottom: 0;
            width: 250px;
            background-color: #2c3e50;
            color: white;
            padding-top: 20px;
            overflow-y: auto;
            z-index: 900;
        }
        
        .sidebar a {
            display: block;
            color: white;
            padding: 15px 20px;
            text-decoration: none;
            transition: background-color 0.3s;
        }
        
        .sidebar a:hover {
            background-color: #34495e;
        }
        
        .content-wrapper {
            margin-left: 0px;
            margin-top: 80px;
            padding: 20px;
        }
        
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 0 15px rgba(0, 0, 0, 0.05);
        }
        
        h1 {
            color: #2c3e50;
            border-bottom: 2px solid #f1f1f1;
            padding-bottom: 12px;
            margin-bottom: 20px;
            font-size: 1.8rem;
        }
        
        .pergunta {
            margin-bottom: 15px;
            padding: 15px;
            background: #f8f9fa;
            border-radius: 5px;
            border-left: 4px solid #3498db;
            transition: all 0.3s ease;
        }
        
        .pergunta-nivel-0 {
            border-left-color: #3498db;
            background: #f8f9fa;
        }
        
        .pergunta-nivel-1 {
            margin-left: 30px;
            border-left-color: #6e48aa;
            background: #f0f7ff;
        }
        
        .pergunta-nivel-2 {
            margin-left: 60px;
            border-left-color: #9b59b6;
            background: #f8f0ff;
        }
        
        .pergunta-nivel-3 {
            margin-left: 90px;
            border-left-color: #8e44ad;
            background: #f3e8ff;
        }
        
        .resposta {
            margin-top: 10px;
            padding: 10px;
            background: #e9f7fe;
            border-radius: 3px;
            border-left: 3px solid #2980b9;
        }
        
        .data-resposta {
            color: #7f8c8d;
            font-size: 0.9em;
            margin-bottom: 20px;
        }
        
        .btn-voltar {
            display: inline-block;
            padding: 10px 15px;
            background-color: #3498db;
            color: white;
            text-decoration: none;
            border-radius: 4px;
            margin-top: 20px;
            transition: background-color 0.3s;
        }
        
        .btn-voltar:hover {
            background-color: #2980b9;
        }
        
        .btn-export {
            display: inline-block;
            padding: 12px 20px;
            background-color: #6c757d;
            color: white;
            text-decoration: none;
            border-radius: 6px;
            margin-top: 20px;
            margin-right: 10px;
            transition: all 0.3s;
            cursor: pointer;
            border: none;
            font-size: 15px;
            font-weight: bold;
        }
        
        .btn-export:hover {
            background-color: #5a6268;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0,0,0,0.2);
        }
        
        .btn-export.pdf {
            background-color: #e74c3c;
        }
        
        .btn-export.pdf:hover {
            background-color: #c0392b;
        }
        
        .btn-export.print {
            background-color: #17a2b8;
        }
        
        .btn-export.print:hover {
            background-color: #138496;
        }
        
        .mensagem-flutuante {
            position: fixed;
            top: 90px;
            right: 25px;
            padding: 14px 24px;
            background: #2ecc71;
            color: white;
            border-radius: 4px;
            z-index: 2000;
            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.15);
            font-weight: 500;
            animation: slideIn 0.3s ease-out;
        }
        
        @keyframes slideIn {
            from {
                transform: translateY(-20px);
                opacity: 0;
            }
            to {
                transform: translateY(0);
                opacity: 1;
            }
        }
        
        .user-info {
            margin-right: 15px;
            font-weight: bold;
            color: #333;
            font-size: 1.1em;
        }
        
        .condicional-indicator {
            color: #6e48aa;
            font-size: 0.8em;
            margin-left: 10px;
            font-style: italic;
        }
        
        .export-buttons {
            display: flex;
            gap: 10px;
            flex-wrap: wrap;
            margin-top: 30px;
            padding-top: 20px;
            border-top: 2px solid #f1f1f1;
        }
        
        @media print {
            .header-fixed, .btn-export, .btn-voltar, .sidebar, .export-buttons {
                display: none !important;
            }
            
            .content-wrapper {
                margin-top: 0 !important;
                margin-left: 0 !important;
                padding: 0 !important;
            }
            
            body {
                background: white !important;
                color: black !important;
                font-size: 12pt !important;
            }
            
            .container {
                box-shadow: none !important;
                border: none !important;
                padding: 10px !important;
                margin: 0 !important;
                max-width: none !important;
            }
            
            .pergunta {
                page-break-inside: avoid;
                border-left: 2px solid #000 !important;
                padding: 8px !important;
                margin-bottom: 8px !important;
                background: white !important;
            }
            
            .resposta {
                border-left: 1px solid #000 !important;
                padding: 6px !important;
                background: #f9f9f9 !important;
            }
            
            .pergunta-nivel-1,
            .pergunta-nivel-2,
            .pergunta-nivel-3 {
                margin-left: 15px !important;
            }
        }
        
        @media (max-width: 768px) {
            .sidebar {
                width: 100%;
                position: relative;
                top: 0;
            }
            
            .content-wrapper {
                margin-left: 0;
                margin-top: 80px;
            }
            
            .container {
                padding: 18px;
            }
            
            .pergunta {
                padding: 12px;
            }
            
            .resposta {
                padding: 8px;
            }
            
            .pergunta-nivel-1 {
                margin-left: 20px;
            }
            
            .pergunta-nivel-2 {
                margin-left: 40px;
            }
            
            .pergunta-nivel-3 {
                margin-left: 60px;
            }
            
            .export-buttons {
                flex-direction: column;
            }
            
            .btn-export {
                width: 100%;
                text-align: center;
            }
        }
    </style>
</head>
<body>
    <!-- Cabeçalho Fixo -->
    <div class="header-fixed">
        <img src="tvitec.png" alt="Logo TVITEC" style="height:40px; margin-right: 15px;">

        <div style="flex-grow: 1; display: flex; align-items: center; justify-content: center; gap: 12px;">
            <h2 style="margin: 0;"></h2>
        </div>

        <div class="user-info" style="display:flex; align-items:center; gap:10px;">
            <?php if (!empty($_SESSION['foto_perfil'])): ?>
                <img src="<?php echo htmlspecialchars($_SESSION['foto_perfil']); ?>" class="user-photo" alt="Foto do usuário" style="width:40px; height:40px; border-radius:50%;">
            <?php else: ?>
                <div class="user-initial" style="width:40px; height:40px; border-radius:50%; background:#ccc; display:flex; align-items:center; justify-content:center; font-weight:bold; font-size:1.2em;">
                    <?php echo strtoupper(substr($_SESSION['nome_usuario'] ?? 'U', 0, 1)); ?>
                </div>
            <?php endif; ?>
            <div style="text-align:left;">
                <div style="font-weight: bold; color: #333; font-size: 1.1em;">
                    <?php echo htmlspecialchars($_SESSION['nome_usuario'] ?? 'Usuário'); ?>
                </div>
                <div style="font-size: 0.9em; color: #555;">
                    <?php echo htmlspecialchars($_SESSION['email_usuario'] ?? ''); ?>
                </div>
            </div>
        </div>
    </div>

    <!-- Conteúdo Principal -->
    <div class="content-wrapper">
        <div class="container">
            <!-- Cabeçalho do documento com destaque para a empresa -->
            <div class="document-header" style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; padding: 20px; background: #f8f9fa; border-radius: 8px; border-left: 5px solid #6e48aa; box-shadow: 0 2px 10px rgba(0,0,0,0.08);">
                <div>
                    <div style="display: flex; align-items: center; margin-bottom: 5px;">
                        <i class="fas fa-building" style="font-size: 1.5em; color: #6e48aa; margin-right: 10px;"></i>
                        <h1 style="margin: 0; color: #6e48aa; font-size: 1.8em; font-weight: 600;">
                            <?= htmlspecialchars($nome_empresa) ?>
                        </h1>
                    </div>
                    
                    <p style="margin: 0; color: #2c3e50; font-size: 1.1em;">
                        <?= htmlspecialchars($nome_cliente) ?>
                    </p>
                </div>
            </div>
           
            <h1><?= htmlspecialchars($resposta['formulario_nome']) ?></h1>
            <p class="data-resposta">Respondido em: <?= date('d/m/Y H:i', strtotime($resposta['data_resposta'])) ?></p>
            
            <?php if (empty($perguntas)): ?>
                <div class="pergunta">
                    <strong>Nenhuma pergunta encontrada para este formulário.</strong>
                    <div class="resposta">
                        <p>As perguntas condicionais podem não estar sendo exibidas devido a um problema na hierarquia.</p>
                    </div>
                </div>
            <?php else: ?>
                <?php foreach ($perguntas as $index => $pergunta): ?>
                    <div class="pergunta pergunta-nivel-<?= $pergunta['nivel'] ?>">
                        <strong><?= ($index + 1) ?>. <?= htmlspecialchars($pergunta['texto']) ?></strong>
                        <?php if ($pergunta['nivel'] > 0): ?>
                            <span class="condicional-indicator">
                                (Pergunta condicional)
                            </span>
                        <?php endif; ?>
                        <div class="resposta">
                            <?php 
                            if ($pergunta['respostas']) {
                                $respostas = explode('|', $pergunta['respostas'] ?? '');

                                foreach ($respostas as $respostaTexto) {
                                    if (!empty(trim($respostaTexto))) {
                                        echo "<p>" . htmlspecialchars($respostaTexto) . "</p>";
                                    }
                                }
                            } else {
                                echo '(Sem resposta)';
                            }
                            ?>
                        </div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
            
            <div class="export-buttons">
                
                <?php if (isset($resposta['cliente_id']) && !empty($resposta['cliente_id'])): ?>
                    <a href="editar_cliente.php?id=<?= $resposta['cliente_id'] ?>#formularios" class="btn-voltar">
                        <i class="fas fa-arrow-left"></i> Voltar
                    </a>
                <?php else: ?>
                    <a href="javascript:history.back()" class="btn-voltar">
                        <i class="fas fa-arrow-left"></i> Voltar
                    </a>
                <?php endif; ?>
            </div>
        </div>
    </div>

    <script>
        // Função simples e direta para gerar PDF
        function gerarPDF() {
            console.log('Iniciando geração de PDF...');
            
            // Verificar se jsPDF está disponível
            if (typeof jspdf === 'undefined') {
                alert('Erro: Biblioteca jsPDF não carregada. Recarregue a página.');
                return;
            }

            try {
                const { jsPDF } = window.jspdf;
                const doc = new jsPDF();
                
                // Configurações iniciais
                let y = 20;
                const lineHeight = 7;
                const pageHeight = 280;
                const margin = 20;
                
                // Adicionar título da empresa
                doc.setFontSize(16);
                doc.setFont('helvetica', 'bold');
                doc.setTextColor(110, 72, 170);
                doc.text('<?= addslashes($nome_empresa) ?>', margin, y);
                y += lineHeight + 5;
                
                // Adicionar nome do cliente
                doc.setFontSize(12);
                doc.setFont('helvetica', 'normal');
                doc.setTextColor(0, 0, 0);
                doc.text('Cliente: <?= addslashes($nome_cliente) ?>', margin, y);
                y += lineHeight + 2;
                
                // Linha divisória
                doc.setDrawColor(110, 72, 170);
                doc.setLineWidth(0.5);
                doc.line(margin, y, 190, y);
                y += 10;
                
                // Título do formulário
                doc.setFontSize(18);
                doc.setFont('helvetica', 'bold');
                doc.text('Formulário: <?= addslashes($resposta['formulario_nome']) ?>', margin, y);
                y += lineHeight + 5;
                
                // Data de resposta
                doc.setFontSize(12);
                doc.setFont('helvetica', 'normal');
                doc.text('Respondido em: <?= date('d/m/Y H:i', strtotime($resposta['data_resposta'])) ?>', margin, y);
                y += lineHeight + 10;
                
                // Perguntas e respostas
                doc.setFontSize(14);
                
                <?php foreach ($perguntas as $index => $pergunta): ?>
                    // Verificar se precisa de nova página
                    if (y > pageHeight) {
                        doc.addPage();
                        y = 20;
                    }
                    
                    // Adicionar pergunta
                    const perguntaText = '<?= ($index + 1) ?>. <?= addslashes($pergunta['texto']) ?>';
                    const perguntaLines = doc.splitTextToSize(perguntaText, 170);
                    
                    doc.setFont('helvetica', 'bold');
                    doc.text(perguntaLines, margin, y);
                    y += perguntaLines.length * lineHeight + 2;
                    
                    <?php if ($pergunta['nivel'] > 0): ?>
                        // Indicador de pergunta condicional
                        doc.setFontSize(10);
                        doc.setTextColor(110, 72, 170);
                        doc.text('(Pergunta condicional)', margin + 10, y);
                        y += lineHeight;
                        doc.setTextColor(0, 0, 0);
                        doc.setFontSize(12);
                    <?php endif; ?>
                    
                    // Adicionar respostas
                    doc.setFont('helvetica', 'normal');
                    
                    <?php if ($pergunta['respostas']): ?>
                        <?php 
                        $respostas = explode('|', $pergunta['respostas']);
                        foreach ($respostas as $r): 
                            if (!empty(trim($r))):
                        ?>
                            if (y > pageHeight) {
                                doc.addPage();
                                y = 20;
                            }
                            
                            const respostaText = '• <?= addslashes($r) ?>';
                            const respostaLines = doc.splitTextToSize(respostaText, 160);
                            doc.text(respostaLines, margin + 10, y);
                            y += respostaLines.length * lineHeight;
                            
                        <?php 
                            endif;
                        endforeach; ?>
                    <?php else: ?>
                        if (y > pageHeight) {
                            doc.addPage();
                            y = 20;
                        }
                        doc.text('(Sem resposta)', margin + 10, y);
                        y += lineHeight;
                    <?php endif; ?>
                    
                    y += 8; // Espaço entre perguntas
                    
                <?php endforeach; ?>
                
                // Salvar o PDF
                const fileName = 'Formulario_<?= addslashes($resposta['formulario_nome']) ?>_<?= date('Y-m-d') ?>.pdf';
                doc.save(fileName);
                
                console.log('PDF gerado com sucesso!');
                
            } catch (error) {
                console.error('Erro ao gerar PDF:', error);
                alert('Erro ao gerar PDF: ' + error.message);
            }
        }
        
        
        
        
        });
    </script>
</body>
</html>