<?php
// lp.php - Página pública da landing page
error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

require_once 'conexao.php';

// Função para debug
function debug_log($mensagem) {
    $log = '[' . date('Y-m-d H:i:s') . '] ' . $mensagem . PHP_EOL;
    if (!file_exists('logs')) {
        mkdir('logs', 0755, true);
    }
    file_put_contents('logs/lp_debug.log', $log, FILE_APPEND);
}

debug_log("=== INÍCIO PROCESSAMENTO LP ===");

// Obter token da URL
$token = $_GET['token'] ?? '';
debug_log("Token: " . ($token ?: 'vazio'));

if (empty($token)) {
    debug_log("Token vazio - página inválida");
    die('Link inválido');
}

// Buscar dados da landing page
$stmt = $conn->prepare("
    SELECT lp.*, f.nome as funil_nome, ef.nome as etapa_nome
    FROM landing_pages lp
    LEFT JOIN funis f ON lp.funil_id = f.id
    LEFT JOIN etapas_funis ef ON lp.etapa_funil_id = ef.id
    WHERE lp.token = ? AND lp.ativo = 1
");
$stmt->bind_param("s", $token);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows === 0) {
    debug_log("Landing page não encontrada ou inativa - Token: $token");
    die('Landing Page não encontrada ou inativa');
}

$landing = $result->fetch_assoc();
$tenantId = $landing['tenant_id'];
debug_log("Landing page encontrada: ID {$landing['id']}, Nome: {$landing['nome']}, Tenant: $tenantId");

// Função para buscar o primeiro admin
function getPrimeiroAdmin($conn, $tenantId) {
    try {
        debug_log("Buscando primeiro admin para tenant $tenantId");
        
        // Buscar o primeiro usuário administrador criado no sistema
        $stmt = $conn->prepare("
            SELECT id, nome, email 
            FROM usuarios 
            WHERE tenant_id = ? 
            AND permissao IN ('admin', 'super_admin') 
            AND ativo = 'sim'
            ORDER BY id ASC 
            LIMIT 1
        ");
        
        if (!$stmt) {
            throw new Exception("Erro na preparação da query: " . $conn->error);
        }
        
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $admin = $result->fetch_assoc();
            debug_log("Admin encontrado: ID {$admin['id']}, Nome: {$admin['nome']}");
            return $admin;
        }
        
        // Se não encontrar admin, buscar qualquer usuário ativo
        debug_log("Nenhum admin encontrado, buscando qualquer usuário ativo");
        $stmt = $conn->prepare("
            SELECT id, nome, email 
            FROM usuarios 
            WHERE tenant_id = ? 
            AND ativo = 'sim'
            ORDER BY id ASC 
            LIMIT 1
        ");
        
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $usuario = $result->fetch_assoc();
            debug_log("Usuário encontrado: ID {$usuario['id']}, Nome: {$usuario['nome']}");
            return $usuario;
        }
        
        debug_log("Nenhum usuário encontrado para tenant $tenantId");
        return null;
    } catch (Exception $e) {
        debug_log("Erro ao buscar primeiro admin: " . $e->getMessage());
        error_log("Erro ao buscar primeiro admin: " . $e->getMessage());
        return null;
    }
}

// Função para garantir que a origem "Landing Page" existe e retornar seus dados
function garantirOrigemLandingPage($conn, $tenantId) {
    try {
        debug_log("Verificando origem 'Landing Page' para tenant $tenantId");
        
        // Verificar se a origem já existe
        $stmt = $conn->prepare("SELECT id, nome FROM origens WHERE tenant_id = ? AND nome = 'Landing Page'");
        $stmt->bind_param("i", $tenantId);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $origem = $result->fetch_assoc();
            debug_log("Origem 'Landing Page' encontrada: ID {$origem['id']}");
            return $origem;
        }
        
        debug_log("Origem 'Landing Page' não encontrada, criando...");
        
        // Criar origem "Landing Page"
        $stmt = $conn->prepare("INSERT INTO origens (tenant_id, nome, descricao, ativo) VALUES (?, 'Landing Page', 'Leads capturados através de landing pages', 1)");
        $stmt->bind_param("i", $tenantId);
        
        if (!$stmt->execute()) {
            throw new Exception("Erro ao criar origem: " . $stmt->error);
        }
        
        $origemId = $stmt->insert_id;
        debug_log("Origem 'Landing Page' criada com ID: $origemId");
        
        return [
            'id' => $origemId,
            'nome' => 'Landing Page'
        ];
        
    } catch (Exception $e) {
        debug_log("ERRO ao garantir origem Landing Page: " . $e->getMessage());
        error_log("Erro ao garantir origem Landing Page: " . $e->getMessage());
        return null;
    }
}

// Incrementar visualização (quando a página é carregada via GET)
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $dataHoje = date('Y-m-d');
    
    // Verificar se a tabela de estatísticas existe
    $checkTable = $conn->query("SHOW TABLES LIKE 'landing_page_estatisticas'");
    if ($checkTable && $checkTable->num_rows > 0) {
        // Verificar se já existe registro para hoje
        $checkStmt = $conn->prepare("SELECT id FROM landing_page_estatisticas WHERE landing_page_id = ? AND data = ?");
        $checkStmt->bind_param("is", $landing['id'], $dataHoje);
        $checkStmt->execute();
        $exists = $checkStmt->get_result()->fetch_assoc();
        
        if ($exists) {
            // Atualizar visualizações
            $updateStmt = $conn->prepare("UPDATE landing_page_estatisticas SET visualizacoes = visualizacoes + 1 WHERE landing_page_id = ? AND data = ?");
            $updateStmt->bind_param("is", $landing['id'], $dataHoje);
            $updateStmt->execute();
            debug_log("Visualização incrementada para landing page {$landing['id']}");
        } else {
            // Inserir novo registro
            $insertStmt = $conn->prepare("INSERT INTO landing_page_estatisticas (landing_page_id, tenant_id, data, visualizacoes) VALUES (?, ?, ?, 1)");
            $insertStmt->bind_param("iis", $landing['id'], $landing['tenant_id'], $dataHoje);
            $insertStmt->execute();
            debug_log("Novo registro de estatística criado para landing page {$landing['id']}");
        }
    }
}

// Processar envio do formulário
$mensagem = '';
$tipoMensagem = '';
$dadosEnviados = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    debug_log("Processando POST do formulário");
    
    try {
        // Coletar dados do formulário
        $camposConfig = json_decode($landing['campos_json'], true);
        $dadosCliente = [];
        $dadosCompletos = [];
        
        foreach ($camposConfig as $campo) {
            $nome = $campo['nome'];
            $valor = trim($_POST[$nome] ?? '');
            
            if ($campo['obrigatorio'] && empty($valor)) {
                throw new Exception("O campo {$campo['rotulo']} é obrigatório");
            }
            
            $dadosCompletos[$nome] = $valor;
            
            // Mapear para campos padrão do cliente
            if ($nome === 'nome' || strpos($nome, 'nome') !== false) {
                $dadosCliente['nome'] = $valor;
            } elseif ($nome === 'email' || strpos($nome, 'email') !== false) {
                $dadosCliente['email'] = $valor;
            } elseif ($nome === 'telefone' || $nome === 'celular' || strpos($nome, 'tel') !== false) {
                $dadosCliente['telefone'] = $valor;
            } elseif ($nome === 'cpf' || $nome === 'cnpj') {
                $dadosCliente['cpf_cnpj'] = $valor;
            }
        }
        
        debug_log("Dados do cliente mapeados: " . json_encode($dadosCliente));
        
        // Buscar o primeiro admin para ser o responsável
        $primeiroAdmin = getPrimeiroAdmin($conn, $tenantId);
        $responsavelId = $primeiroAdmin ? $primeiroAdmin['id'] : null;
        
        if (!$responsavelId) {
            throw new Exception("Nenhum responsável encontrado no sistema");
        }
        
        debug_log("Responsável definido: ID $responsavelId");
        
        // Garantir que a origem "Landing Page" existe e obter seus dados
        $origem = garantirOrigemLandingPage($conn, $tenantId);
        
        if (!$origem) {
            throw new Exception("Não foi possível configurar a origem 'Landing Page'");
        }
        
        $origemId = $origem['id'];
        $origemNome = $origem['nome'];
        
        debug_log("Origem configurada: ID=$origemId, Nome=$origemNome");
        
        // Inserir cliente no sistema
        $conn->begin_transaction();
        
        $nomeCliente = $dadosCliente['nome'] ?? 'Visitante';
        $emailCliente = $dadosCliente['email'] ?? '';
        $telefoneCliente = $dadosCliente['telefone'] ?? '';
        $cpfCnpj = $dadosCliente['cpf_cnpj'] ?? '';
        
        // Verificar se a coluna responsavel existe
        $checkResponsavel = $conn->query("SHOW COLUMNS FROM clientes LIKE 'responsavel'");
        $hasResponsavel = $checkResponsavel && $checkResponsavel->num_rows > 0;
        
        // Verificar se a coluna Origem (varchar) existe
        $checkOrigemVarchar = $conn->query("SHOW COLUMNS FROM clientes LIKE 'Origem'");
        $hasOrigemVarchar = $checkOrigemVarchar && $checkOrigemVarchar->num_rows > 0;
        
        debug_log("Estrutura da tabela: hasResponsavel=$hasResponsavel, hasOrigemVarchar=$hasOrigemVarchar");
        
        // Construir a query dinamicamente com base na estrutura da tabela
        $camposInsert = ["tenant_id", "Nome_Cliente", "Email", "Telefone", "CPF_CNPJ", "origem_id"];
        $placeholders = ["?", "?", "?", "?", "?", "?"];
        $tipos = "issssi"; // i=tenant, s=nome, s=email, s=telefone, s=cpf, i=origem_id
        $parametros = [$tenantId, $nomeCliente, $emailCliente, $telefoneCliente, $cpfCnpj, $origemId];
        
        // Adicionar campo Origem (varchar) se existir
        if ($hasOrigemVarchar) {
            $camposInsert[] = "Origem";
            $placeholders[] = "?";
            $tipos .= "s";
            $parametros[] = $origemNome;
        }
        
        // Adicionar campos fixos
        $camposInsert[] = "status";
        $placeholders[] = "1";
        // status não precisa de placeholder porque é valor fixo
        
        $camposInsert[] = "etapa_funil_id";
        $placeholders[] = "?";
        $tipos .= "i";
        $parametros[] = $landing['etapa_funil_id'];
        
        $camposInsert[] = "funil_id";
        $placeholders[] = "?";
        $tipos .= "i";
        $parametros[] = $landing['funil_id'];
        
        $camposInsert[] = "Data_Cadastro";
        $placeholders[] = "NOW()";
        // NOW() não precisa de placeholder
        
        // Adicionar responsavel se existir
        if ($hasResponsavel) {
            $camposInsert[] = "responsavel";
            $placeholders[] = "?";
            $tipos .= "i";
            $parametros[] = $responsavelId;
        }
        
        // Construir a query final
        $sql = "INSERT INTO clientes (" . implode(", ", $camposInsert) . ") VALUES (" . implode(", ", $placeholders) . ")";
        
        debug_log("SQL: $sql");
        debug_log("Tipos: $tipos");
        debug_log("Parâmetros: " . json_encode($parametros));
        
        $stmtCliente = $conn->prepare($sql);
        
        if (!$stmtCliente) {
            throw new Exception("Erro na preparação da query: " . $conn->error);
        }
        
        // Bind dos parâmetros dinamicamente
        $stmtCliente->bind_param($tipos, ...$parametros);
        
        if (!$stmtCliente->execute()) {
            throw new Exception("Erro ao inserir cliente: " . $stmtCliente->error);
        }
        
        $clienteId = $stmtCliente->insert_id;
        debug_log("Cliente inserido com ID: $clienteId");
        debug_log("Dados: tenant=$tenantId, nome=$nomeCliente, email=$emailCliente, origem_id=$origemId, Origem=$origemNome, responsavel=$responsavelId");
        
        // Registrar submissão
        $stmtSubmissao = $conn->prepare("
            INSERT INTO landing_page_submissoes 
            (landing_page_id, tenant_id, cliente_id, dados_submissao, ip, user_agent)
            VALUES (?, ?, ?, ?, ?, ?)
        ");
        
        if (!$stmtSubmissao) {
            throw new Exception("Erro na preparação da query de submissão: " . $conn->error);
        }
        
        $ip = $_SERVER['REMOTE_ADDR'] ?? '';
        $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
        $dadosJson = json_encode($dadosCompletos);
        
        $stmtSubmissao->bind_param(
            "iiisss",
            $landing['id'],
            $tenantId,
            $clienteId,
            $dadosJson,
            $ip,
            $userAgent
        );
        
        if (!$stmtSubmissao->execute()) {
            throw new Exception("Erro ao registrar submissão: " . $stmtSubmissao->error);
        }
        
        debug_log("Submissão registrada com sucesso");
        
        $conn->commit();
        
        // Registrar log em arquivo separado
        $arquivoLog = 'logs/landing_pages.log';
        $dataHora = date('Y-m-d H:i:s');
        $mensagemLog = "[$dataHora] Lead capturado - Landing: {$landing['nome']} (ID: {$landing['id']}), Cliente: $clienteId, Responsável: $responsavelId, Origem ID: $origemId, Origem Nome: $origemNome, IP: $ip\n";
        
        if (!file_exists('logs')) {
            mkdir('logs', 0755, true);
        }
        file_put_contents($arquivoLog, $mensagemLog, FILE_APPEND);
        
        // Atualizar estatísticas de submissões
        $checkTable = $conn->query("SHOW TABLES LIKE 'landing_page_estatisticas'");
        if ($checkTable && $checkTable->num_rows > 0) {
            $dataHoje = date('Y-m-d');
            
            // Verificar se já existe registro para hoje
            $checkStmt = $conn->prepare("SELECT id FROM landing_page_estatisticas WHERE landing_page_id = ? AND data = ?");
            $checkStmt->bind_param("is", $landing['id'], $dataHoje);
            $checkStmt->execute();
            $exists = $checkStmt->get_result()->fetch_assoc();
            
            if ($exists) {
                // Atualizar existente
                $updateStmt = $conn->prepare("UPDATE landing_page_estatisticas SET submissoes = submissoes + 1 WHERE landing_page_id = ? AND data = ?");
                $updateStmt->bind_param("is", $landing['id'], $dataHoje);
                $updateStmt->execute();
                debug_log("Estatísticas de submissão atualizadas");
            } else {
                // Inserir novo registro
                $insertStmt = $conn->prepare("INSERT INTO landing_page_estatisticas (landing_page_id, tenant_id, data, submissoes) VALUES (?, ?, ?, 1)");
                $insertStmt->bind_param("iis", $landing['id'], $landing['tenant_id'], $dataHoje);
                $insertStmt->execute();
                debug_log("Novo registro de estatísticas de submissão criado");
            }
        }
        
        // Redirecionar se configurado
        if (!empty($landing['redirect_url'])) {
            debug_log("Redirecionando para: " . $landing['redirect_url']);
            header("Location: " . $landing['redirect_url']);
            exit;
        }
        
        $mensagem = $landing['agradecimento_mensagem'] ?: 'Obrigado pelo seu contato! Em breve retornaremos.';
        $tipoMensagem = 'sucesso';
        debug_log("Mensagem de sucesso: $mensagem");
        
    } catch (Exception $e) {
        if (isset($conn)) {
            $conn->rollback();
        }
        $mensagem = 'Erro ao processar: ' . $e->getMessage();
        $tipoMensagem = 'erro';
        debug_log("ERRO: " . $e->getMessage());
        error_log("Erro no processamento da landing page: " . $e->getMessage());
    }
}

// Decodificar campos do formulário
$campos = json_decode($landing['campos_json'], true);
debug_log("=== FIM PROCESSAMENTO LP ===");
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= htmlspecialchars($landing['titulo'] ?: $landing['nome']) ?></title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Segoe UI', Arial, sans-serif;
            background-color: #f5f5f5;
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }
        
        .landing-container {
            max-width: 600px;
            width: 100%;
        }
        
        .landing-card {
            background: white;
            border-radius: 8px;
            overflow: hidden;
            box-shadow: 0 2px 20px rgba(0,0,0,0.1);
        }
        
        .landing-header {
            background: <?= $landing['cor_primaria'] ?: '#4cafaf' ?>;
            color: white;
            padding: 40px 20px;
            text-align: center;
            <?php if (!empty($landing['imagem_fundo_path'])): ?>
            background-image: url('<?= htmlspecialchars($landing['imagem_fundo_path']) ?>');
            background-size: cover;
            background-position: center;
            <?php endif; ?>
        }
        
        .landing-logo {
            max-height: 80px;
            margin-bottom: 20px;
        }
        
        .landing-header h1 {
            font-size: 28px;
            margin-bottom: 10px;
        }
        
        .landing-header p {
            font-size: 16px;
            opacity: 0.9;
        }
        
        .landing-body {
            padding: 30px;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: 500;
        }
        
        .form-group input,
        .form-group select,
        .form-group textarea {
            width: 100%;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-family: inherit;
            font-size: 14px;
        }
        
        .form-group input:focus,
        .form-group select:focus,
        .form-group textarea:focus {
            outline: none;
            border-color: <?= $landing['cor_primaria'] ?>;
            box-shadow: 0 0 0 3px rgba(76, 175, 175, 0.1);
        }
        
        .btn-submit {
            background: <?= $landing['cor_botao'] ?: '#4cafaf' ?>;
            color: white;
            border: none;
            padding: 12px 30px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            width: 100%;
            transition: opacity 0.3s;
        }
        
        .btn-submit:hover {
            opacity: 0.9;
        }
        
        .btn-submit:disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }
        
        .mensagem-sucesso {
            background-color: #d4edda;
            color: #155724;
            padding: 15px;
            border-radius: 4px;
            margin-bottom: 20px;
            border: 1px solid #c3e6cb;
        }
        
        .mensagem-erro {
            background-color: #f8d7da;
            color: #721c24;
            padding: 15px;
            border-radius: 4px;
            margin-bottom: 20px;
            border: 1px solid #f5c6cb;
        }
        
        .required:after {
            content: " *";
            color: red;
        }
        
        .loading {
            display: inline-block;
            width: 20px;
            height: 20px;
            border: 3px solid rgba(255,255,255,.3);
            border-radius: 50%;
            border-top-color: #fff;
            animation: spin 1s ease-in-out infinite;
        }
        
        @keyframes spin {
            to { transform: rotate(360deg); }
        }
        
        <?php if (!empty($landing['css_customizado'])): ?>
        /* CSS Customizado da Landing Page */
        <?= $landing['css_customizado'] ?>
        <?php endif; ?>
    </style>
</head>
<body>
    <div class="landing-container">
        <?php if (!empty($mensagem) && $tipoMensagem === 'sucesso'): ?>
            <div class="landing-card" style="text-align: center;">
                <div class="landing-header">
                    <h1><i class="fas fa-check-circle"></i> Obrigado!</h1>
                </div>
                <div class="landing-body">
                    <p style="font-size: 18px; margin-bottom: 30px;"><?= nl2br(htmlspecialchars($mensagem)) ?></p>
                    <a href="?token=<?= $token ?>" style="background: <?= $landing['cor_primaria'] ?>; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; display: inline-block;">Voltar</a>
                </div>
            </div>
        <?php elseif (!empty($mensagem) && $tipoMensagem === 'erro'): ?>
            <div class="landing-card" style="text-align: center;">
                <div class="landing-header" style="background: #e74c3c;">
                    <h1><i class="fas fa-exclamation-triangle"></i> Erro</h1>
                </div>
                <div class="landing-body">
                    <p style="color: #e74c3c; margin-bottom: 30px;"><?= nl2br(htmlspecialchars($mensagem)) ?></p>
                    <a href="?token=<?= $token ?>" style="background: <?= $landing['cor_primaria'] ?>; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px; display: inline-block;">Tentar novamente</a>
                </div>
            </div>
        <?php elseif (!empty($landing['html_customizado'])): ?>
            <!-- HTML Customizado -->
            <?php 
            // Função auxiliar para gerar formulário no HTML customizado
            function gerarFormularioCustomizado($campos, $landing) {
                $html = '<form method="POST" class="landing-form" style="max-width: 600px; margin: 0 auto;">';
                
                foreach ($campos as $campo) {
                    $obrigatorio = !empty($campo['obrigatorio']) ? 'required' : '';
                    $rotulo = htmlspecialchars($campo['rotulo']);
                    $nome = htmlspecialchars($campo['nome']);
                    
                    $html .= '<div class="form-group" style="margin-bottom: 15px;">';
                    $html .= '<label style="display: block; margin-bottom: 5px;">' . $rotulo;
                    if (!empty($campo['obrigatorio'])) {
                        $html .= ' <span style="color: red;">*</span>';
                    }
                    $html .= '</label>';
                    
                    if ($campo['tipo'] === 'textarea') {
                        $html .= '<textarea name="' . $nome . '" style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" ' . $obrigatorio . ' rows="4"></textarea>';
                    } elseif ($campo['tipo'] === 'select') {
                        $html .= '<select name="' . $nome . '" style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" ' . $obrigatorio . '>';
                        $html .= '<option value="">Selecione...</option>';
                        $html .= '</select>';
                    } elseif ($campo['tipo'] === 'checkbox') {
                        $html .= '<label style="display: flex; align-items: center; gap: 10px;">';
                        $html .= '<input type="checkbox" name="' . $nome . '" ' . $obrigatorio . '>';
                        $html .= '<span>' . $rotulo . '</span>';
                        $html .= '</label>';
                    } elseif ($campo['tipo'] === 'radio') {
                        $html .= '<div>';
                        $html .= '<label style="display: flex; align-items: center; gap: 10px;">';
                        $html .= '<input type="radio" name="' . $nome . '" ' . $obrigatorio . '>';
                        $html .= '<span>' . $rotulo . '</span>';
                        $html .= '</label>';
                        $html .= '</div>';
                    } elseif ($campo['tipo'] === 'cpf') {
                        $html .= '<input type="text" name="' . $nome . '" style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" ' . $obrigatorio . ' placeholder="000.000.000-00" maxlength="14">';
                    } elseif ($campo['tipo'] === 'cnpj') {
                        $html .= '<input type="text" name="' . $nome . '" style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" ' . $obrigatorio . ' placeholder="00.000.000/0000-00" maxlength="18">';
                    } else {
                        $tipoInput = $campo['tipo'] === 'email' ? 'email' : ($campo['tipo'] === 'tel' ? 'tel' : 'text');
                        $html .= '<input type="' . $tipoInput . '" name="' . $nome . '" style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" ' . $obrigatorio . ' placeholder="' . $rotulo . '">';
                    }
                    
                    $html .= '</div>';
                }
                
                $html .= '<button type="submit" class="btn-submit" style="background: ' . $landing['cor_botao'] . '; color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; width: 100%; font-size: 16px;">Enviar</button>';
                $html .= '</form>';
                
                return $html;
            }
            
            echo str_replace(
                ['{titulo}', '{subtitulo}', '{formulario}', '{logo}'],
                [
                    htmlspecialchars($landing['titulo']),
                    htmlspecialchars($landing['subtitulo']),
                    gerarFormularioCustomizado($campos, $landing),
                    !empty($landing['logo_path']) ? '<img src="' . htmlspecialchars($landing['logo_path']) . '" class="landing-logo" style="max-height: 80px; margin-bottom: 20px;">' : ''
                ],
                $landing['html_customizado']
            );
            ?>
        <?php else: ?>
            <!-- Template Padrão -->
            <div class="landing-card">
                <div class="landing-header">
                    <?php if (!empty($landing['logo_path'])): ?>
                        <img src="<?= htmlspecialchars($landing['logo_path']) ?>" alt="Logo" class="landing-logo">
                    <?php endif; ?>
                    <h1><?= htmlspecialchars($landing['titulo'] ?: 'Título da Página') ?></h1>
                    <p><?= htmlspecialchars($landing['subtitulo'] ?: 'Preencha o formulário para receber mais informações') ?></p>
                </div>
                <div class="landing-body">
                    <form method="POST" id="landingForm">
                        <?php foreach ($campos as $campo): ?>
                            <div class="form-group">
                                <label class="<?= !empty($campo['obrigatorio']) ? 'required' : '' ?>">
                                    <?= htmlspecialchars($campo['rotulo']) ?>
                                </label>
                                
                                <?php if ($campo['tipo'] === 'textarea'): ?>
                                    <textarea name="<?= htmlspecialchars($campo['nome']) ?>" 
                                              rows="4"
                                              <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>
                                              placeholder="<?= htmlspecialchars($campo['rotulo']) ?>"></textarea>
                                              
                                <?php elseif ($campo['tipo'] === 'select'): ?>
                                    <select name="<?= htmlspecialchars($campo['nome']) ?>"
                                            <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>>
                                        <option value="">Selecione...</option>
                                    </select>
                                    
                                <?php elseif ($campo['tipo'] === 'checkbox'): ?>
                                    <label style="display: flex; align-items: center; gap: 10px;">
                                        <input type="checkbox" name="<?= htmlspecialchars($campo['nome']) ?>" 
                                               <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>>
                                        <span><?= htmlspecialchars($campo['rotulo']) ?></span>
                                    </label>
                                    
                                <?php elseif ($campo['tipo'] === 'radio'): ?>
                                    <div>
                                        <label style="display: flex; align-items: center; gap: 10px;">
                                            <input type="radio" name="<?= htmlspecialchars($campo['nome']) ?>" 
                                                   <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>>
                                            <span><?= htmlspecialchars($campo['rotulo']) ?></span>
                                        </label>
                                    </div>
                                    
                                <?php elseif ($campo['tipo'] === 'cpf'): ?>
                                    <input type="text" name="<?= htmlspecialchars($campo['nome']) ?>" 
                                           <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>
                                           placeholder="000.000.000-00"
                                           oninput="this.value = this.value.replace(/[^0-9]/g, '').replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, '$1.$2.$3-$4')"
                                           maxlength="14">
                                           
                                <?php elseif ($campo['tipo'] === 'cnpj'): ?>
                                    <input type="text" name="<?= htmlspecialchars($campo['nome']) ?>" 
                                           <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>
                                           placeholder="00.000.000/0000-00"
                                           oninput="this.value = this.value.replace(/[^0-9]/g, '').replace(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/, '$1.$2.$3/$4-$5')"
                                           maxlength="18">
                                           
                                <?php else: ?>
                                    <input type="<?= $campo['tipo'] === 'email' ? 'email' : ($campo['tipo'] === 'tel' ? 'tel' : 'text') ?>" 
                                           name="<?= htmlspecialchars($campo['nome']) ?>" 
                                           <?= !empty($campo['obrigatorio']) ? 'required' : '' ?>
                                           placeholder="<?= htmlspecialchars($campo['rotulo']) ?>">
                                <?php endif; ?>
                            </div>
                        <?php endforeach; ?>
                        
                        <button type="submit" class="btn-submit" id="btnSubmit">
                            Enviar
                        </button>
                    </form>
                </div>
            </div>
        <?php endif; ?>
    </div>
    
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    
    <script>
    // Prevenir duplo envio do formulário
    document.getElementById('landingForm')?.addEventListener('submit', function(e) {
        const btn = document.getElementById('btnSubmit');
        if (btn) {
            btn.disabled = true;
            btn.innerHTML = '<span class="loading"></span> Enviando...';
        }
    });
    
    // Máscara para telefone (opcional)
    document.querySelectorAll('input[type="tel"]').forEach(input => {
        input.addEventListener('input', function(e) {
            let value = e.target.value.replace(/\D/g, '');
            if (value.length <= 10) {
                value = value.replace(/(\d{2})(\d{4})(\d{4})/, '($1) $2-$3');
            } else {
                value = value.replace(/(\d{2})(\d{5})(\d{4})/, '($1) $2-$3');
            }
            e.target.value = value;
        });
    });
    </script>
</body>
</html>
<?php
if (isset($conn)) $conn->close();
?>