<?php
// Configurações de sessão
ini_set('session.cookie_secure', 1);
ini_set('session.cookie_httponly', 1);
ini_set('session.use_strict_mode', 1);
session_start();

// === CSRF helper ===
if (!isset($_SESSION['csrf_tokens']) || !is_array($_SESSION['csrf_tokens'])) {
    $_SESSION['csrf_tokens'] = [];
}

function csrf_gc($ttl = 7200) {
    $now = time();
    foreach ($_SESSION['csrf_tokens'] as $t => $ts) {
        if ($now - (int)$ts > $ttl) {
            unset($_SESSION['csrf_tokens'][$t]);
        }
    }
}

function csrf_issue($ttl = 7200) {
    csrf_gc($ttl);
    $token = bin2hex(random_bytes(32));
    $_SESSION['csrf_tokens'][$token] = time();
    return $token;
}

function csrf_validate($token, $ttl = 7200, $consume = true) {
    csrf_gc($ttl);
    if (!$token) return false;
    if (!isset($_SESSION['csrf_tokens'][$token])) return false;
    $age = time() - (int)$_SESSION['csrf_tokens'][$token];
    $ok = $age <= $ttl;
    if ($consume) {
        unset($_SESSION['csrf_tokens'][$token]);
    }
    return $ok && $age >= 0;
}

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

// Verificar tenant_id
$tenant_id = $_SESSION['tenant_id'] ?? null;
if (!$tenant_id || !is_numeric($tenant_id)) {
    die("Tenant não identificado.");
}

// CSRF token
$csrf_token = csrf_issue();

// Conexão com o banco de dados
require_once 'conexao.php';

// Buscar formulários existentes - ADICIONANDO O CAMPO DE NOTA MÍNIMA
$formularios = [];
$query = "SELECT id, nome, tipo, temperatura, nota_minima, criado_em FROM formularios WHERE tenant_id = ? ORDER BY criado_em DESC";
$stmt = $conn->prepare($query);
if ($stmt) {
    $stmt->bind_param("i", $tenant_id);
    $stmt->execute();
    $result = $stmt->get_result();
    $formularios = $result->fetch_all(MYSQLI_ASSOC);
    $stmt->close();
} else {
    error_log("Erro na consulta: " . $conn->error);
}

// Mensagens de sucesso
if (isset($_SESSION['mensagem'])) {
    $mensagem = $_SESSION['mensagem'];
    $tipo = $_SESSION['mensagem_tipo'] ?? 'sucesso';
    unset($_SESSION['mensagem'], $_SESSION['mensagem_tipo']);
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon_io/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon_io/favicon-32x32.png">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formulários - SON</title>
    <meta name="csrf-token" content="<?= htmlspecialchars($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>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        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;
            height: 80px;
        }
        
        .header-fixed img {
            height: 40px;
            margin-right: 15px;
        }
        
        .header-fixed h2 {
            margin: 0;
            flex-grow: 1;
            text-align: center;
        }
        
        /* Menu Lateral Recolhível - AGORA NA ESQUERDA */
        .sidebar {
            position: fixed;
            left: 0;
            top: 80px;
            height: calc(100vh - 80px);
            width: 60px;
            background: white;
            box-shadow: 2px 0 5px rgba(0,0,0,0.1);
            z-index: 999;
            transition: width 0.3s ease;
            overflow-x: hidden;
        }
        
        /* Conteúdo Principal */
        .main-content {
            margin-top: 20px;
            padding: 60px;
            margin-left: 80px;
            transition: margin-left 0.3s ease;
        }
        
        .container {
            max-width: 1400px;
            margin: 0 auto;
            padding: 30px;
            background: white;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
        }
        
        /* Botões de Ação */
        .acoes {
            display: flex;
            gap: 10px;
            flex-wrap: nowrap;
            white-space: nowrap;
        }
        
        .btn {
            padding: 8px 14px;
            border: none;
            border-radius: 4px;
            color: white;
            cursor: pointer;
            font-size: 0.9rem;
            transition: all 0.3s;
            display: flex;
            align-items: center;
            gap: 5px;
            white-space: nowrap;
        }
        
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }
        
        .btn:active {
            transform: translateY(0);
        }
        
        .btn-editar {
            background-color: #3498db;
        }
        
        .btn-editar:hover {
            background-color: #2980b9;
        }
        
        .btn-excluir {
            background-color: #e74c3c;
        }
        
        .btn-excluir:hover {
            background-color: #c0392b;
        }
        
        .btn-duplicar {
            background-color: #9b59b6;
        }
        
        .btn-duplicar:hover {
            background-color: #8e44ad;
        }
        
        /* Botão Novo */
        .btn-novo {
            background-color: #2ecc71;
            color: white;
            padding: 10px 15px;
            border-radius: 4px;
            text-decoration: none;
            display: inline-flex;
            align-items: center;
            gap: 5px;
            margin-bottom: 20px;
        }
        
        .btn-novo:hover {
            background-color: #27ae60;
            transform: translateY(-2px);
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
        }
        
        /* Estilos para a tabela com mais espaçamento */
        .lista-formularios {
            margin: 20px 0;
            border: 1px solid #ddd;
            border-radius: 5px;
            overflow-x: auto;
            background: white;
        }
        
        .lista-formularios table {
            width: 100%;
            border-collapse: collapse;
            min-width: 1000px;
        }
        
        .lista-formularios th, .lista-formularios td {
            padding: 16px 20px;
            text-align: left;
            border-bottom: 1px solid #ddd;
            vertical-align: middle;
            word-break: break-word;
            line-height: 1.4;
        }
        
        /* Definindo larguras específicas para evitar quebra de linha */
        .lista-formularios th:nth-child(1),
        .lista-formularios td:nth-child(1) {
            width: 30%;
            min-width: 200px;
            padding-right: 30px;
        }
        
        .lista-formularios th:nth-child(2),
        .lista-formularios td:nth-child(2) {
            width: 12%;
            min-width: 100px;
        }
        
        .lista-formularios th:nth-child(3),
        .lista-formularios td:nth-child(3) {
            width: 15%;
            min-width: 120px;
        }
        
        .lista-formularios th:nth-child(4),
        .lista-formularios td:nth-child(4) {
            width: 15%;
            min-width: 130px;
        }
        
        .lista-formularios th:nth-child(5),
        .lista-formularios td:nth-child(5) {
            width: 18%;
            min-width: 150px;
        }
        
        .lista-formularios th:nth-child(6),
        .lista-formularios td:nth-child(6) {
            width: 30%;
            min-width: 300px;
            padding-left: 20px;
        }
        
        .lista-formularios th {
            background-color: #f8f9fa;
            font-weight: bold;
            color: #333;
            font-size: 0.95rem;
            padding-top: 18px;
            padding-bottom: 18px;
            border-bottom: 2px solid #ddd;
        }
        
        .lista-formularios tr:hover {
            background-color: #f9f9f9;
        }
        
        .lista-formularios tr:last-child td {
            border-bottom: none;
        }
        
        .badge-tipo {
            display: inline-block;
            padding: 6px 12px;
            border-radius: 15px;
            font-size: 0.85rem;
            font-weight: bold;
            margin-left: 8px;
        }
        
        .badge-email {
            background-color: #e3f2fd;
            color: #1976d2;
            border: 1px solid #bbdefb;
        }
        
        .badge-questionario {
            background-color: #e8f5e8;
            color: #2e7d32;
            border: 1px solid #c8e6c9;
        }

        /* Estilo para a nota mínima e temperatura */
        .nota-minima, .temperatura {
            font-weight: bold;
        }
        
        .nota-valor, .temperatura-valor {
            background-color: #f8f9fa;
            padding: 6px 12px;
            border-radius: 6px;
            border: 1px solid #e0e0e0;
            font-weight: bold;
            display: inline-block;
            min-width: 80px;
            text-align: center;
        }
        
        .nota-valor {
            color: #27ae60;
        }
        
        .temperatura-valor {
            color: #e67e22;
        }

        /* Mensagens */
        .mensagem-flutuante {
            position: fixed;
            top: 80px;
            right: 20px;
            padding: 15px 25px;
            border-radius: 4px;
            color: white;
            z-index: 2000;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            animation: slideIn 0.5s, fadeOut 0.5s 2.5s forwards;
        }
        
        .mensagem-sucesso {
            background-color: #2ecc71;
        }
        
        .mensagem-erro {
            background-color: #e74c3c;
        }
        
        @keyframes slideIn {
            from { transform: translateX(100%); opacity: 0; }
            to { transform: translateX(0); opacity: 1; }
        }
        
        @keyframes fadeOut {
            from { opacity: 1; }
            to { opacity: 0; }
        }

        /* Estilos para o nome do formulário */
        .nome-formulario {
            font-weight: 500;
            color: #2c3e50;
            font-size: 1rem;
            word-break: break-word;
            padding-right: 15px;
        }

        /* Responsividade */
        @media (max-width: 1024px) {
            .container {
                padding: 20px;
                max-width: 100%;
            }
            
            .main-content {
                margin-left: 60px;
                padding: 15px;
            }
            
            .lista-formularios table {
                min-width: 900px;
            }
        }
        
        @media (max-width: 768px) {
            .header-fixed {
                padding: 12px 15px;
                height: 70px;
            }
            
            .header-fixed h2 {
                font-size: 1.3rem;
            }
            
            .main-content {
                margin-top: 70px;
                margin-left: 0;
                padding: 10px;
            }
            
            .container {
                padding: 15px;
            }
            
            .btn-novo {
                width: 100%;
                justify-content: center;
                margin-bottom: 15px;
            }
            
            .acoes {
                flex-direction: column;
                gap: 8px;
                min-width: 150px;
            }
            
            .btn {
                width: 100%;
                justify-content: center;
                padding: 10px;
            }
            
            .lista-formularios {
                border: none;
                border-radius: 0;
            }
            
            .lista-formularios th, .lista-formularios td {
                padding: 12px 15px;
            }
        }
    </style>
</head>
<body>

<?php include 'menu_lateral.php'; ?>

<div class="main-content">
    <div class="container">
        <h1><i class="fas fa-file-alt"></i> Formulários Existentes</h1>
        
        <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
            <a href="cadastrar_formulario.php" class="btn-novo">
                <i class="fas fa-plus"></i> Novo Formulário
            </a>
        </div>
        
        <?php if (empty($formularios)): ?>
            <p>Nenhum formulário criado ainda.</p>
        <?php else: ?>
            <div class="lista-formularios">
                <table>
                    <thead>
                        <tr>
                            <th>Nome</th>
                            <th>Tipo</th>
                            <th>Temperatura</th>
                            <th>Nota Mínima</th>
                            <th>Criado em</th>
                            <th>Ações</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($formularios as $form): ?>
                            <tr>
                                <td class="nome-formulario"><?= htmlspecialchars($form['nome']) ?></td>
                                <td>
                                    <?php if ($form['tipo'] === 'questionario'): ?>
                                        <span class="badge-tipo badge-questionario">Funil</span>
                                    <?php else: ?>
                                        <span class="badge-tipo badge-email">E-mail</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if (!empty($form['temperatura'])): ?>
                                        <span class="temperatura-valor"><?= htmlspecialchars($form['temperatura']) ?>°</span>
                                    <?php else: ?>
                                        <span style="color: #999;">-</span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if (!empty($form['nota_minima'])): ?>
                                        <span class="nota-valor"><?= htmlspecialchars($form['nota_minima']) ?> pontos</span>
                                    <?php else: ?>
                                        <span style="color: #999;">-</span>
                                    <?php endif; ?>
                                </td>
                                <td><?= date('d/m/Y H:i', strtotime($form['criado_em'])) ?></td>
                                <td class="acoes">
                                    <button class="btn btn-editar" onclick="editarFormulario(<?= $form['id'] ?>)">
                                        <i class="fas fa-edit"></i> Editar
                                    </button>
                                    <button class="btn btn-excluir" onclick="confirmarExclusao(<?= $form['id'] ?>, '<?= htmlspecialchars(addslashes($form['nome'])) ?>')">
                                        <i class="fas fa-trash"></i> Excluir
                                    </button>
                                    <button class="btn btn-duplicar" onclick="duplicarFormulario(<?= $form['id'] ?>)">
                                        <i class="fas fa-copy"></i> Duplicar
                                    </button>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        <?php endif; ?>
    </div>
</div>

<!-- Mensagem Flutuante -->
<?php if (isset($mensagem)): ?>
    <div class="mensagem-flutuante mensagem-<?= $tipo ?>">
        <?= htmlspecialchars($mensagem) ?>
    </div>
<?php endif; ?>

<script>
    // Função para confirmar exclusão
    function confirmarExclusao(id, nome) {
        const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
        
        Swal.fire({
            title: 'Confirmar Exclusão',
            text: `Tem certeza que deseja excluir o formulário "${nome}"?`,
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#d33',
            cancelButtonColor: '#3085d6',
            confirmButtonText: 'Sim, excluir!',
            cancelButtonText: 'Cancelar'
        }).then((result) => {
            if (result.isConfirmed) {
                excluirFormulario(id);
            }
        });
    }

    // Função para excluir formulário
    function excluirFormulario(id) {
        const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
        
        Swal.fire({
            title: 'Processando...',
            html: 'Excluindo formulário',
            allowOutsideClick: false,
            didOpen: () => {
                Swal.showLoading();
            }
        });

        fetch('formulario_excluir.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRF-Token': csrfToken
            },
            body: JSON.stringify({
                id: id,
                csrf_token: csrfToken
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'sucesso') {
                Swal.fire({
                    title: 'Excluído!',
                    text: data.mensagem,
                    icon: 'success',
                    timer: 2000,
                    showConfirmButton: false,
                    timerProgressBar: true
                }).then(() => {
                    location.reload();
                });
            } else {
                Swal.fire('Erro!', 'Erro ao excluir: ' + data.mensagem, 'error');
            }
        })
        .catch(error => {
            console.error('Erro:', error);
            Swal.fire('Erro!', 'Erro ao excluir formulário', 'error');
        });
    }

    // Função para duplicar formulário
    function duplicarFormulario(id) {
        const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
        
        Swal.fire({
            title: 'Confirmar Duplicação',
            text: 'Deseja criar uma cópia deste formulário?',
            icon: 'question',
            showCancelButton: true,
            confirmButtonColor: '#9b59b6',
            cancelButtonColor: '#3085d6',
            confirmButtonText: 'Sim, duplicar!',
            cancelButtonText: 'Cancelar'
        }).then((result) => {
            if (result.isConfirmed) {
                processarDuplicacao(id);
            }
        });
    }

    function processarDuplicacao(id) {
        const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
        
        Swal.fire({
            title: 'Processando...',
            html: 'Duplicando formulário',
            allowOutsideClick: false,
            didOpen: () => {
                Swal.showLoading();
            }
        });

        fetch('formulario_duplicar.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRF-Token': csrfToken
            },
            body: JSON.stringify({
                id: id,
                csrf_token: csrfToken
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.status === 'sucesso') {
                Swal.fire({
                    title: 'Duplicado!',
                    text: data.mensagem,
                    icon: 'success',
                    timer: 2000,
                    showConfirmButton: false,
                    timerProgressBar: true
                }).then(() => {
                    location.reload();
                });
            } else {
                Swal.fire('Erro!', 'Erro ao duplicar: ' + data.mensagem, 'error');
            }
        })
        .catch(error => {
            console.error('Erro:', error);
            Swal.fire('Erro!', 'Erro ao duplicar formulário', 'error');
        });
    }

    // Função para editar formulário
    function editarFormulario(id) {
        window.location.href = 'cadastrar_formulario.php?edit=' + id;
    }
</script>
<?php include 'sino_notificacoes.php'; ?>
</body>
</html>