<?php
session_start();
require_once 'conexao.php';

// Criar diretório de logs se não existir
if (!file_exists('logs')) {
    mkdir('logs', 0755, true);
}

// Função para log detalhado
function logDetalhado($mensagem) {
    $log_data = date('Y-m-d H:i:s') . " | " . $mensagem . "\n";
    file_put_contents('logs/teste_gratuito.log', $log_data, FILE_APPEND);
    error_log($mensagem);
}

/**
 * ✅ FUNÇÃO ENVIAR EMAIL COM PHPMailer + SMTP (mesmo sistema do enviar_email.php)
 */
function enviarEmailTeste($destinatario, $nome, $senha, $data_expiracao) {
    logDetalhado("🔧 Iniciando envio de email para: $destinatario");
    
    try {
        // Verificar se o arquivo de configuração SMTP existe
        if (!file_exists('config_smtp.php')) {
            logDetalhado("❌ Arquivo config_smtp.php não encontrado");
            
            // Tentar criar um arquivo de configuração padrão
            $config_content = "<?php\n";
            $config_content .= "// Configurações SMTP para envio de e-mails\n";
            $config_content .= "define('SMTP_HOST', 'smtp.gmail.com');\n";
            $config_content .= "define('SMTP_USER', 'seu-email@gmail.com');\n";
            $config_content .= "define('SMTP_PASS', 'sua-senha');\n";
            $config_content .= "define('SMTP_PORT', 587);\n";
            
            if (file_put_contents('config_smtp.php', $config_content)) {
                logDetalhado("⚠️ Modelo de config_smtp.php criado. Configure com suas credenciais SMTP.");
            } else {
                logDetalhado("❌ Não foi possível criar config_smtp.php");
            }
            
            return false;
        }
        
        // Incluir arquivo de configurações SMTP externo
        require_once 'config_smtp.php';
        
        logDetalhado("✅ Config SMTP carregada: " . SMTP_HOST . ":" . SMTP_PORT);
        
        // Verificar se o PHPMailer está disponível
        $phpmailer_paths = [
            'PHPMailer/PHPMailer.php',
            'PHPMailer/src/PHPMailer.php',
            '../PHPMailer/PHPMailer.php',
            'vendor/phpmailer/phpmailer/src/PHPMailer.php',
            __DIR__ . '/PHPMailer/PHPMailer.php',
            __DIR__ . '/PHPMailer/src/PHPMailer.php'
        ];
        
        $phpmailer_file = null;
        $smtp_file = null;
        $exception_file = null;
        
        foreach ($phpmailer_paths as $path) {
            if (file_exists($path)) {
                $phpmailer_file = $path;
                $smtp_file = str_replace('PHPMailer.php', 'SMTP.php', $path);
                $exception_file = str_replace('PHPMailer.php', 'Exception.php', $path);
                logDetalhado("✅ PHPMailer encontrado em: $path");
                break;
            }
        }
        
        if (!$phpmailer_file || !file_exists($phpmailer_file)) {
            logDetalhado("❌ PHPMailer não encontrado em nenhum dos caminhos");
            
            // Tentar incluir via autoload do composer
            if (file_exists('vendor/autoload.php')) {
                require_once 'vendor/autoload.php';
                logDetalhado("✅ PHPMailer carregado via Composer autoload");
            } else {
                logDetalhado("❌ Composer autoload também não encontrado");
                return false;
            }
        } else {
            // Incluir PHPMailer manualmente
            logDetalhado("🔧 Incluindo PHPMailer manualmente");
            require_once $phpmailer_file;
            require_once $smtp_file;
            if (file_exists($exception_file)) {
                require_once $exception_file;
            }
        }
        
        // Configurar e-mail
        $mail = new PHPMailer\PHPMailer\PHPMailer(true);
        
        try {
            // Configurações do servidor SMTP
            $mail->isSMTP();
            $mail->Host = SMTP_HOST;
            $mail->SMTPAuth = true;
            $mail->Username = SMTP_USER;
            $mail->Password = SMTP_PASS;
            $mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
            $mail->Port = SMTP_PORT;
            
            // Configurações gerais
            $mail->CharSet = 'UTF-8';
            $mail->SMTPDebug = 0; // 0 = sem debug, 2 = debug detalhado
            $mail->Timeout = 30;
            
            logDetalhado("🔧 Configurando remetente: " . SMTP_USER);
            
            // Remetente
            $mail->setFrom(SMTP_USER, 'Sistema SON - Teste Gratuito');
            
            // Reply-To
            $mail->addReplyTo('suporte@tvitecnologia.com.br', 'Suporte SON');
            
            // Destinatário
            $mail->addAddress($destinatario, $nome);
            logDetalhado("✅ Destinatário adicionado: $destinatario ($nome)");
            
            // Conteúdo
            $mail->isHTML(true);
            $mail->Subject = '🚀 Seu teste gratuito do SON foi ativado!';
            
            $mensagem_html = "<!DOCTYPE html>
            <html lang='pt-br'>
            <head>
                <meta charset='UTF-8'>
                <meta name='viewport' content='width=device-width, initial-scale=1.0'>
                <title>Acesso ao SON</title>
                <style>
                    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; }
                    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; text-align: center; border-radius: 10px 10px 0 0; }
                    .content { padding: 30px; background: #f9f9f9; }
                    .info-box { background: white; padding: 20px; border-radius: 8px; border-left: 4px solid #667eea; margin: 20px 0; }
                    .credentials { background: #f0f0f0; padding: 15px; border-radius: 5px; font-family: monospace; margin: 15px 0; }
                    .btn { display: inline-block; background: #667eea; color: white; padding: 12px 25px; text-decoration: none; border-radius: 5px; font-weight: bold; margin: 10px 0; }
                    .features { background: #e8f4fc; padding: 20px; border-radius: 8px; border: 1px solid #c5e1f9; margin: 20px 0; }
                    .footer { background: #2c3e50; color: white; padding: 20px; text-align: center; border-radius: 0 0 10px 10px; font-size: 0.8em; }
                    .warning { background: #fff3cd; border: 1px solid #ffeaa7; padding: 15px; border-radius: 5px; margin: 15px 0; }
                </style>
            </head>
            <body>
                <div class='header'>
                    <h1>🎉 Teste Gratuito Ativado!</h1>
                    <p>Sistema de Organização de Negócios - SON</p>
                </div>
                
                <div class='content'>
                    <h2>Olá, $nome!</h2>
                    <p>Seu período de teste de <strong>15 dias</strong> foi ativado com sucesso no sistema SON!</p>
                    
                    <div class='info-box'>
                        <h3>📋 Seus Dados de Acesso:</h3>
                        <div class='credentials'>
                            <strong>URL de Acesso:</strong> <a href='http://son.tvitecnologia.com.br'>http://son.tvitecnologia.com.br</a><br>
                            <strong>E-mail:</strong> $destinatario<br>
                            <strong>Senha temporária:</strong> $senha<br>
                            <strong>Período de teste:</strong> Até $data_expiracao
                        </div>
                    </div>
                    
                    <div style='text-align: center; margin: 25px 0;'>
                        <a href='http://son.tvitecnologia.com.br/login.php' class='btn'>
                            ACESSAR SISTEMA AGORA
                        </a>
                    </div>
                    
                    <div class='features'>
                        <h4>✨ Funcionalidades Disponíveis no Teste:</h4>
                        <ul>
                            <li>✅ Gestão completa de clientes</li>
                            <li>✅ Funil de vendas inteligente</li>
                            <li>✅ Agenda e calendário integrados</li>
                            <li>✅ Cadastro de produtos e serviços</li>
                            <li>✅ Sistema de atividades e tarefas</li>
                            <li>✅ Dashboard com análises</li>
                            <li>✅ Envio de e-mails diretamente do sistema</li>
                        </ul>
                    </div>
                    
                    <div class='warning'>
                        <h4>⚠️ Limitações do Período de Teste:</h4>
                        <ul>
                            <li>• 1 usuário simultâneo</li>
                            <li>• Até 10 clientes cadastrados</li>
                            <li>• 100MB de armazenamento</li>
                            <li>• Acesso válido por 15 dias</li>
                        </ul>
                    </div>
                    
                    <div style='margin-top: 25px; padding-top: 20px; border-top: 1px solid #eee;'>
                        <p><strong>📞 Precisa de ajuda?</strong></p>
                        <p>Entre em contato com nosso suporte:</p>
                        <p>
                            📧 <a href='mailto:suporte@tvitecnologia.com.br'>suporte@tvitecnologia.com.br</a><br>
                            🌐 <a href='https://tvitecnologia.com.br'>https://tvitecnologia.com.br</a>
                        </p>
                    </div>
                </div>
                
                <div class='footer'>
                    <p>SON - Sistema de Organização de Negócios</p>
                    <p>© " . date('Y') . " Tvi Tecnologia. Todos os direitos reservados.</p>
                </div>
            </body>
            </html>";
            
            $mail->Body = $mensagem_html;
            $mail->AltBody = "Teste gratuito ativado!\n\nOlá $nome!\n\nSeu período de teste de 15 dias foi ativado com sucesso no sistema SON!\n\nDADOS DE ACESSO:\nURL: http://son.tvitecnologia.com.br\nE-mail: $destinatario\nSenha: $senha\nPeríodo de teste: Até $data_expiracao\n\nAcesse agora: http://son.tvitecnologia.com.br/login.php\n\nEquipe SON - TVI Tecnologia";
            
            logDetalhado("📤 Tentando enviar email via SMTP...");
            
            // Tentar enviar
            if ($mail->send()) {
                logDetalhado("✅ Email enviado com sucesso para: $destinatario");
                return true;
            } else {
                logDetalhado("❌ Falha no envio PHPMailer: " . $mail->ErrorInfo);
                return false;
            }
            
        } catch (Exception $e) {
            logDetalhado("❌ Exceção PHPMailer: " . $e->getMessage());
            return false;
        }
        
    } catch (Exception $e) {
        logDetalhado("❌ Exceção geral no envio: " . $e->getMessage());
        return false;
    }
}

function gerarSenhaAleatoria($tamanho = 12) {
    $caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()';
    $senha = '';
    for ($i = 0; $i < $tamanho; $i++) {
        $senha .= $caracteres[rand(0, strlen($caracteres) - 1)];
    }
    return $senha;
}

/**
 * FUNÇÃO PARA CRIAR FUNIL PADRÃO E ETAPAS
 */
function criarFunilPadraoParaTenant($conn, $tenant_id) {
    try {
        // Verificar se a tabela 'funis' existe
        $tabelaExiste = $conn->query("SHOW TABLES LIKE 'funis'");
        if ($tabelaExiste->num_rows == 0) {
            logDetalhado("⚠️ Tabela 'funis' não existe");
            return false;
        }
        
        // Criar o funil padrão
        $stmt_funil = $conn->prepare("INSERT INTO funis (tenant_id, nome, descricao, ativo, padrao, cor, ordem) 
                                     VALUES (?, 'Funil de Vendas', 'Funil padrão do sistema', 1, 1, '#3498db', 1)");
        
        if (!$stmt_funil) {
            throw new Exception("Erro na preparação do funil: " . $conn->error);
        }
        
        $stmt_funil->bind_param("i", $tenant_id);
        
        if (!$stmt_funil->execute()) {
            throw new Exception("Erro ao criar funil: " . $stmt_funil->error);
        }
        
        $funil_id = $conn->insert_id;
        $stmt_funil->close();
        
        logDetalhado("✅ Funil criado com ID: $funil_id para o tenant: $tenant_id");
        
        // Verificar se a tabela 'etapas_funil' existe
        $tabelaEtapasExiste = $conn->query("SHOW TABLES LIKE 'etapas_funil'");
        if ($tabelaEtapasExiste->num_rows == 0) {
            logDetalhado("⚠️ Tabela 'etapas_funil' não existe");
            return $funil_id;
        }
        
        // Definir etapas padrão
        $etapas_padrao = [
            ['nome' => 'Contato Inicial', 'ordem' => 1, 'cor' => '#e74c3c', 'probabilidade' => 10],
            ['nome' => 'Qualificação', 'ordem' => 2, 'cor' => '#e67e22', 'probabilidade' => 25],
            ['nome' => 'Apresentação', 'ordem' => 3, 'cor' => '#f1c40f', 'probabilidade' => 50],
            ['nome' => 'Negociação', 'ordem' => 4, 'cor' => '#3498db', 'probabilidade' => 75],
            ['nome' => 'Fechamento', 'ordem' => 5, 'cor' => '#2ecc71', 'probabilidade' => 100]
        ];
        
        // Criar cada etapa do funil
        foreach ($etapas_padrao as $etapa) {
            $stmt_etapa = $conn->prepare("INSERT INTO etapas_funil 
                                        (funil_id, tenant_id, nome, ordem, cor, probabilidade_venda, ativo) 
                                        VALUES (?, ?, ?, ?, ?, ?, 1)");
            
            if (!$stmt_etapa) {
                throw new Exception("Erro na preparação da etapa: " . $conn->error);
            }
            
            $stmt_etapa->bind_param("iisssi", 
                $funil_id, 
                $tenant_id, 
                $etapa['nome'], 
                $etapa['ordem'], 
                $etapa['cor'], 
                $etapa['probabilidade']
            );
            
            if (!$stmt_etapa->execute()) {
                throw new Exception("Erro ao criar etapa: " . $stmt_etapa->error);
            }
            
            $stmt_etapa->close();
        }
        
        logDetalhado("✅ " . count($etapas_padrao) . " etapas criadas para o funil ID: $funil_id");
        return $funil_id;
        
    } catch (Exception $e) {
        logDetalhado("❌ Erro ao criar funil padrão: " . $e->getMessage());
        return false;
    }
}

/**
 * FUNÇÃO PARA CRIAR CLIENTE NO TENANT 17 (ADMIN)
 */
function criarClienteParaAdmin($conn, $dados_cliente, $tenant_admin_id = 17, $funil_admin_id = 2, $etapa_admin_id = 9) {
    try {
        logDetalhado("📝 Criando cliente para admin (tenant $tenant_admin_id, funil $funil_admin_id, etapa $etapa_admin_id)");
        
        // Verificar se a tabela clientes existe
        $tabelaExiste = $conn->query("SHOW TABLES LIKE 'clientes'");
        if ($tabelaExiste->num_rows == 0) {
            logDetalhado("⚠️ Tabela 'clientes' não existe");
            return false;
        }
        
        // Verificar qual estrutura da tabela clientes
        $checkTable = $conn->query("SHOW COLUMNS FROM clientes");
        $columns = [];
        while ($row = $checkTable->fetch_assoc()) {
            $columns[] = $row['Field'];
        }
        
        // Mapear campos de acordo com a estrutura da tabela
        $campos = [];
        $valores = [];
        $tipos = "";
        $params = [];
        
        // Campos obrigatórios
        if (in_array('tenant_id', $columns)) {
            $campos[] = 'tenant_id';
            $tipos .= "i";
            $params[] = $tenant_admin_id;
        }
        
        if (in_array('etapa_funil_id', $columns)) {
            $campos[] = 'etapa_funil_id';
            $tipos .= "i";
            $params[] = $etapa_admin_id;
        }
        
        // Nome do cliente (pode ser Nome_Cliente, nome, razao_social, etc)
        if (in_array('Nome_Cliente', $columns)) {
            $campos[] = 'Nome_Cliente';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_empresa'];
        } elseif (in_array('nome', $columns)) {
            $campos[] = 'nome';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_empresa'];
        } elseif (in_array('razao_social', $columns)) {
            $campos[] = 'razao_social';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_empresa'];
        }
        
        // Nome do responsável (contato)
        if (in_array('contato', $columns)) {
            $campos[] = 'contato';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_responsavel'];
        } elseif (in_array('responsavel', $columns)) {
            $campos[] = 'responsavel';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_responsavel'];
        } elseif (in_array('nome_responsavel', $columns)) {
            $campos[] = 'nome_responsavel';
            $tipos .= "s";
            $params[] = $dados_cliente['nome_responsavel'];
        }
        
        // Email
        if (in_array('Email', $columns)) {
            $campos[] = 'Email';
            $tipos .= "s";
            $params[] = $dados_cliente['email'];
        } elseif (in_array('email', $columns)) {
            $campos[] = 'email';
            $tipos .= "s";
            $params[] = $dados_cliente['email'];
        }
        
        // Telefone
        if (!empty($dados_cliente['telefone'])) {
            if (in_array('Telefone', $columns)) {
                $campos[] = 'Telefone';
                $tipos .= "s";
                $params[] = $dados_cliente['telefone'];
            } elseif (in_array('telefone', $columns)) {
                $campos[] = 'telefone';
                $tipos .= "s";
                $params[] = $dados_cliente['telefone'];
            }
        }
        
        // CNPJ/CPF
        if (!empty($dados_cliente['cnpj'])) {
            if (in_array('cnpj', $columns)) {
                $campos[] = 'cnpj';
                $tipos .= "s";
                $params[] = $dados_cliente['cnpj'];
            } elseif (in_array('cpf_cnpj', $columns)) {
                $campos[] = 'cpf_cnpj';
                $tipos .= "s";
                $params[] = $dados_cliente['cnpj'];
            } elseif (in_array('documento', $columns)) {
                $campos[] = 'documento';
                $tipos .= "s";
                $params[] = $dados_cliente['cnpj'];
            }
        }
        
        // Data de cadastro
        $data_atual = date('Y-m-d H:i:s');
        if (in_array('data_criacao', $columns)) {
            $campos[] = 'data_criacao';
            $tipos .= "s";
            $params[] = $data_atual;
        } elseif (in_array('criado_em', $columns)) {
            $campos[] = 'criado_em';
            $tipos .= "s";
            $params[] = $data_atual;
        } elseif (in_array('created_at', $columns)) {
            $campos[] = 'created_at';
            $tipos .= "s";
            $params[] = $data_atual;
        }
        
        // Observações
        $observacao = "Lead de teste gratuito - Cadastrado em " . date('d/m/Y H:i') . " - Período de teste: 15 dias";
        if (in_array('observacoes', $columns)) {
            $campos[] = 'observacoes';
            $tipos .= "s";
            $params[] = $observacao;
        } elseif (in_array('observacao', $columns)) {
            $campos[] = 'observacao';
            $tipos .= "s";
            $params[] = $observacao;
        } elseif (in_array('descricao', $columns)) {
            $campos[] = 'descricao';
            $tipos .= "s";
            $params[] = $observacao;
        }
        
        // Status (1 = ativo)
        if (in_array('status', $columns)) {
            $campos[] = 'status';
            $tipos .= "i";
            $params[] = 1;
        } elseif (in_array('ativo', $columns)) {
            $campos[] = 'ativo';
            $tipos .= "i";
            $params[] = 1;
        }
        
        if (empty($campos)) {
            logDetalhado("❌ Nenhum campo identificado na tabela clientes");
            return false;
        }
        
        // Montar query
        $placeholders = implode(', ', array_fill(0, count($campos), '?'));
        $sql = "INSERT INTO clientes (" . implode(', ', $campos) . ") VALUES (" . $placeholders . ")";
        
        logDetalhado("📊 SQL: " . $sql);
        
        $stmt = $conn->prepare($sql);
        if (!$stmt) {
            throw new Exception("Erro na preparação: " . $conn->error);
        }
        
        // Bind params dinamicamente
        $stmt->bind_param($tipos, ...$params);
        
        if (!$stmt->execute()) {
            throw new Exception("Erro ao executar: " . $stmt->error);
        }
        
        $cliente_id = $conn->insert_id;
        $stmt->close();
        
        logDetalhado("✅ Cliente criado para admin com ID: $cliente_id");
        return $cliente_id;
        
    } catch (Exception $e) {
        logDetalhado("❌ Erro ao criar cliente para admin: " . $e->getMessage());
        return false;
    }
}

$erro = '';
$sucesso = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    logDetalhado("📝 Recebendo POST de cadastro de teste");
    
    $nome_empresa = trim($_POST['nome_empresa'] ?? '');
    $nome_responsavel = trim($_POST['nome_responsavel'] ?? '');
    $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
    $telefone = trim($_POST['telefone'] ?? '');
    $cnpj = preg_replace('/[^0-9]/', '', $_POST['cnpj'] ?? '');
    
    logDetalhado("📋 Dados recebidos: Empresa=$nome_empresa, Responsável=$nome_responsavel, Email=$email");
    
    // Gerar senha automática
    $senha = gerarSenhaAleatoria();
    logDetalhado("🔑 Senha gerada: $senha");
    
    if (empty($nome_empresa) || empty($nome_responsavel) || empty($email)) {
        $erro = 'Preencha todos os campos obrigatórios.';
        logDetalhado("❌ $erro");
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $erro = 'E-mail inválido.';
        logDetalhado("❌ $erro");
    } elseif (!empty($cnpj) && strlen($cnpj) != 14) {
        $erro = 'CNPJ inválido (deve ter 14 dígitos).';
        logDetalhado("❌ $erro");
    } else {
        // Verificar se email já existe
        $stmt = $conn->prepare("SELECT id FROM usuarios WHERE email = ?");
        $stmt->bind_param("s", $email);
        $stmt->execute();
        $resultado = $stmt->get_result();

        if ($resultado->num_rows > 0) {
            $erro = 'Este e-mail já está em uso.';
            logDetalhado("❌ $erro");
        } else {
            // Verificar se CNPJ já existe
            if (!empty($cnpj)) {
                $stmt = $conn->prepare("SELECT id FROM tenants WHERE cnpj = ?");
                $stmt->bind_param("s", $cnpj);
                $stmt->execute();
                $resultado = $stmt->get_result();
                
                if ($resultado->num_rows > 0) {
                    $erro = 'Este CNPJ já está cadastrado para teste.';
                    logDetalhado("❌ $erro");
                }
            }
            
            if (empty($erro)) {
                // Iniciar transação
                $conn->begin_transaction();
                logDetalhado("💾 Iniciando transação de banco de dados");
                
                try {
                    // Calcular datas
                    $data_inicio = date('Y-m-d');
                    $data_expiracao = date('Y-m-d', strtotime('+15 days'));
                    logDetalhado("📅 Datas: Início=$data_inicio, Expiração=$data_expiracao");
                    
                    // 1. Criar tenant para teste
                    // Primeiro, verificar se existe o plano de teste (ID 99)
                    $stmt = $conn->prepare("SELECT id FROM planos WHERE id = 99");
                    $stmt->execute();
                    $result = $stmt->get_result();
                    
                    if ($result->num_rows == 0) {
                        // Criar plano de teste se não existir
                        logDetalhado("➕ Criando plano de teste ID 99");
                        $stmt = $conn->prepare("INSERT INTO planos (id, nome, descricao, max_usuarios, preco_mensal, ativo) VALUES (99, 'Teste Gratuito', 'Plano de teste por 15 dias', 1, 0.00, 1)");
                        if (!$stmt->execute()) {
                            throw new Exception("Erro ao criar plano: " . $stmt->error);
                        }
                    }
                    
                    $plano_teste = 99;
                    $quota_total_mb = 100;
                    $quota_padrao_mb = 10;
                    
                    // Criar tenant
                    logDetalhado("🏢 Criando tenant para: $nome_empresa");
                    $stmt_tenant = $conn->prepare("INSERT INTO tenants (
                        nome, plano_id, data_inicio, data_fim, ativo,
                        cnpj, nome_fantasia,
                        quota_padrao_mb, quota_total_mb, espaco_utilizado_total_mb,
                        permite_aumento_quota, notificar_quota_80, notificar_quota_90,
                        max_usuarios, usuarios_ativos
                    ) VALUES (
                        ?, ?, ?, ?, 1,
                        ?, ?,
                        ?, ?, 0.00,
                        0, 0, 0,
                        1, 1
                    )");
                    
                    if (!$stmt_tenant) {
                        throw new Exception("Erro na preparação do tenant: " . $conn->error);
                    }
                    
                    $stmt_tenant->bind_param(
                        "sissisii",
                        $nome_empresa,
                        $plano_teste,
                        $data_inicio,
                        $data_expiracao,
                        $cnpj,
                        $nome_empresa,
                        $quota_padrao_mb,
                        $quota_total_mb
                    );
                    
                    if (!$stmt_tenant->execute()) {
                        throw new Exception("Erro ao criar tenant: " . $stmt_tenant->error);
                    }
                    
                    $tenant_id = $conn->insert_id;
                    $stmt_tenant->close();
                    
                    logDetalhado("✅ Tenant criado com ID: $tenant_id");
                    
                    // 2. Criar licença de teste
                    logDetalhado("📄 Criando licença para tenant $tenant_id");
                    $stmt_licenca = $conn->prepare("INSERT INTO licencas (
                        tenant_id, plano_id, data_inicio, data_fim, ativa
                    ) VALUES (?, ?, ?, ?, 1)");
                    
                    if (!$stmt_licenca) {
                        throw new Exception("Erro na preparação da licença: " . $conn->error);
                    }
                    
                    $stmt_licenca->bind_param(
                        "iiss",
                        $tenant_id,
                        $plano_teste,
                        $data_inicio,
                        $data_expiracao
                    );
                    
                    if (!$stmt_licenca->execute()) {
                        throw new Exception("Erro ao criar licença: " . $stmt_licenca->error);
                    }
                    
                    $stmt_licenca->close();
                    
                    // 3. Criar funil padrão e etapas para o tenant do lead
                    $funil_criado = criarFunilPadraoParaTenant($conn, $tenant_id);
                    
                    if ($funil_criado) {
                        logDetalhado("✅ Funil padrão criado com sucesso para o lead");
                    } else {
                        logDetalhado("⚠️ Funil padrão não foi criado para o lead");
                    }
                    
                    // 4. Criar usuário admin para o lead
                    logDetalhado("👤 Criando usuário admin para o lead: $email");
                    
                    // Gerar hash BCRYPT
                    $senha_hash = password_hash($senha, PASSWORD_BCRYPT, ['cost' => 10]);
                    
                    // Verificar se o hash foi gerado corretamente
                    if (strlen($senha_hash) < 60) {
                        throw new Exception("Falha na geração do hash da senha");
                    }
                    
                    $verificacao = password_verify($senha, $senha_hash);
                    if (!$verificacao) {
                        throw new Exception("Falha na verificação do hash");
                    }
                    
                    logDetalhado("🔑 Hash de senha gerado com sucesso");
                    
                    $permissao = 'admin';
                    $ativo = 'sim';
                    
                    // Verificar estrutura da tabela usuarios
                    $checkTable = $conn->query("SHOW COLUMNS FROM usuarios");
                    $columns = [];
                    while ($row = $checkTable->fetch_assoc()) {
                        $columns[] = $row['Field'];
                    }
                    
                    // Verificar quais colunas existem
                    $hasCargo = in_array('cargo', $columns);
                    $hasVerTodosClientes = in_array('ver_todos_clientes', $columns);
                    
                    if ($hasCargo && $hasVerTodosClientes) {
                        $stmt_usuario = $conn->prepare("INSERT INTO usuarios (
                            nome, email, senha, permissao, ativo, tenant_id,
                            telefone, ver_todos_clientes, cargo
                        ) VALUES (?, ?, ?, ?, ?, ?, ?, 1, 'Responsável')");
                        
                        $stmt_usuario->bind_param(
                            "sssssis",
                            $nome_responsavel,
                            $email,
                            $senha_hash,
                            $permissao,
                            $ativo,
                            $tenant_id,
                            $telefone
                        );
                    } elseif ($hasCargo) {
                        $stmt_usuario = $conn->prepare("INSERT INTO usuarios (
                            nome, email, senha, permissao, ativo, tenant_id,
                            telefone, cargo
                        ) VALUES (?, ?, ?, ?, ?, ?, ?, 'Responsável')");
                        
                        $stmt_usuario->bind_param(
                            "sssssis",
                            $nome_responsavel,
                            $email,
                            $senha_hash,
                            $permissao,
                            $ativo,
                            $tenant_id,
                            $telefone
                        );
                    } else {
                        $stmt_usuario = $conn->prepare("INSERT INTO usuarios (
                            nome, email, senha, permissao, ativo, tenant_id,
                            telefone
                        ) VALUES (?, ?, ?, ?, ?, ?, ?)");
                        
                        $stmt_usuario->bind_param(
                            "ssssiss",
                            $nome_responsavel,
                            $email,
                            $senha_hash,
                            $permissao,
                            $ativo,
                            $tenant_id,
                            $telefone
                        );
                    }
                    
                    if (!$stmt_usuario) {
                        throw new Exception("Erro na preparação do usuário: " . $conn->error);
                    }
                    
                    if (!$stmt_usuario->execute()) {
                        throw new Exception("Erro ao criar usuário: " . $stmt_usuario->error);
                    }
                    
                    $usuario_id = $conn->insert_id;
                    $stmt_usuario->close();
                    
                    logDetalhado("✅ Usuário criado com ID: $usuario_id para o lead");
                    
                    // 5. CRIAR CLIENTE NO TENANT DO ADMIN (17) PARA CONTROLE
                    $dados_cliente = [
                        'nome_empresa' => $nome_empresa,
                        'nome_responsavel' => $nome_responsavel,
                        'email' => $email,
                        'telefone' => $telefone,
                        'cnpj' => $cnpj
                    ];
                    
                    $cliente_admin_id = criarClienteParaAdmin($conn, $dados_cliente);
                    
                    if ($cliente_admin_id) {
                        logDetalhado("✅ Lead registrado no tenant do admin (ID: $cliente_admin_id)");
                    } else {
                        logDetalhado("⚠️ Não foi possível registrar lead no tenant do admin");
                    }
                    
                    // Confirmar transação
                    $conn->commit();
                    logDetalhado("✅ Transação confirmada com sucesso!");
                    
                    // ✅ ENVIAR EMAIL
                    $data_expiracao_formatada = date('d/m/Y', strtotime($data_expiracao));
                    logDetalhado("📧 Preparando envio de email para: $email");
                    
                    $emailEnviado = enviarEmailTeste($email, $nome_responsavel, $senha, $data_expiracao_formatada);
                    
                    if ($emailEnviado) {
                        $sucesso = 'Cadastro realizado com sucesso! Você receberá um e-mail com os dados de acesso. Seu teste expira em ' . $data_expiracao_formatada . '.';
                        logDetalhado("🎉 Cadastro completo com email enviado!");
                    } else {
                        $sucesso = 'Cadastro realizado! Acesse o sistema com o e-mail ' . $email . ' e senha: ' . $senha . '. Seu teste expira em ' . $data_expiracao_formatada . '.';
                        logDetalhado("⚠️ Cadastro completo MAS email NÃO enviado! Mostrando senha na tela.");
                    }
                    
                } catch (Exception $e) {
                    $conn->rollback();
                    $erro = 'Erro no cadastro: ' . $e->getMessage();
                    logDetalhado("❌ Erro no cadastro: " . $e->getMessage());
                }
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sistema SON - Teste Gratuito de 15 Dias</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }
        
        .container {
            background: white;
            border-radius: 20px;
            box-shadow: 0 20px 40px rgba(0,0,0,0.1);
            width: 100%;
            max-width: 800px;
            overflow: hidden;
        }
        
        .header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 40px;
            text-align: center;
        }
        
        .header h1 {
            font-size: 2.5rem;
            margin-bottom: 10px;
        }
        
        .header p {
            font-size: 1.1rem;
            opacity: 0.9;
        }
        
        .content {
            padding: 40px;
        }
        
        .features {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 20px;
            margin-bottom: 30px;
        }
        
        .feature {
            text-align: center;
            padding: 20px;
            border-radius: 10px;
            background: #f8f9fa;
        }
        
        .feature i {
            font-size: 2.5rem;
            color: #667eea;
            margin-bottom: 15px;
        }
        
        .feature h3 {
            margin-bottom: 10px;
            color: #333;
        }
        
        .form-container {
            background: #f8f9fa;
            padding: 30px;
            border-radius: 15px;
        }
        
        .form-group {
            margin-bottom: 20px;
        }
        
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
            color: #333;
        }
        
        .form-group input {
            width: 100%;
            padding: 12px 15px;
            border: 2px solid #ddd;
            border-radius: 8px;
            font-size: 16px;
            transition: all 0.3s;
        }
        
        .form-group input:focus {
            border-color: #667eea;
            outline: none;
            box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
        }
        
        .btn {
            display: block;
            width: 100%;
            padding: 15px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border: none;
            border-radius: 8px;
            font-size: 18px;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.3s;
        }
        
        .btn:hover {
            transform: translateY(-2px);
            box-shadow: 0 10px 20px rgba(102, 126, 234, 0.2);
        }
        
        .terms {
            margin-top: 20px;
            font-size: 0.9rem;
            color: #666;
            text-align: center;
        }
        
        .terms a {
            color: #667eea;
            text-decoration: none;
        }
        
        .msg {
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            text-align: center;
        }
        
        .msg.error {
            background: #ffebee;
            color: #c62828;
            border: 1px solid #ffcdd2;
        }
        
        .msg.success {
            background: #e8f5e9;
            color: #2e7d32;
            border: 1px solid #c8e6c9;
        }
        
        .login-link {
            text-align: center;
            margin-top: 20px;
            color: #666;
        }
        
        .login-link a {
            color: #667eea;
            text-decoration: none;
            font-weight: 600;
        }
        
        @media (max-width: 768px) {
            .header {
                padding: 30px 20px;
            }
            
            .header h1 {
                font-size: 2rem;
            }
            
            .content {
                padding: 20px;
            }
            
            .features {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1><i class="fas fa-rocket"></i> INICIE SEU TESTE GRÁTIS AGORA</h1>
            <p>Teste o seu novo sistema de gestão por 15 dias</p>
        </div>
        
        <div class="content">
            <div class="features">
                <div class="feature">
                    <i class="fas fa-users"></i>
                    <h3>Gestão de Clientes</h3>
                    <p>Organize todos os seus contatos</p>
                </div>
                <div class="feature">
                    <i class="fas fa-chart-line"></i>
                    <h3>Funil Padrão</h3>
                    <p>Acompanhe todo o processo</p>
                </div>
                <div class="feature">
                    <i class="fas fa-calendar-alt"></i>
                    <h3>Agenda Inteligente</h3>
                    <p>Gerencie seus compromissos</p>
                </div>
                <div class="feature">
                    <i class="fas fa-file-invoice"></i>
                    <h3>Controle Completo</h3>
                    <p>Produtos, atividades e muito mais</p>
                </div>
                <div class="feature">
                    <i class="fas fa-tasks"></i>
                    <h3>Landing Pages</h3>
                    <p>Gerencie suas landing pages diretamente no sistema</p>
                </div>
                <div class="feature">
                    <i class="fas fa-cogs"></i>
                    <h3>Fluxos Automatizados</h3>
                    <p>Automatize processos para agilizar o trabalho da equipe</p>
                </div>
            </div>
            
            <?php if ($erro): ?>
                <div class="msg error">
                    <i class="fas fa-exclamation-circle"></i> <?php echo htmlspecialchars($erro); ?>
                </div>
            <?php elseif ($sucesso): ?>
                <div class="msg success">
                    <i class="fas fa-check-circle"></i> <?php echo htmlspecialchars($sucesso); ?>
                    <?php if (strpos($sucesso, 'senha:') !== false): ?>
                        <div style="margin-top: 10px; padding: 10px; background: #d4edda; border-radius: 5px; font-family: monospace;">
                            <strong>Senha:</strong> <?php echo htmlspecialchars($senha); ?>
                        </div>
                    <?php endif; ?>
                </div>
                <div class="login-link">
                    <a href="login.php" style="display: inline-block; padding: 10px 20px; background: #667eea; color: white; text-decoration: none; border-radius: 5px; font-weight: bold;">
                        <i class="fas fa-sign-in-alt"></i> Clique aqui para fazer login
                    </a>
                </div>
            <?php endif; ?>
            
            <?php if (!$sucesso): ?>
                <div class="form-container">
                    <form method="POST" id="formTeste">
                        <div class="form-group">
                            <label for="nome_empresa"><i class="fas fa-building"></i> Nome da Empresa *</label>
                            <input type="text" name="nome_empresa" id="nome_empresa" required>
                        </div>
                        
                        <div class="form-group">
                            <label for="nome_responsavel"><i class="fas fa-user"></i> Nome do Responsável *</label>
                            <input type="text" name="nome_responsavel" id="nome_responsavel" required>
                        </div>
                        
                        <div class="form-group">
                            <label for="email"><i class="fas fa-envelope"></i> E-mail *</label>
                            <input type="email" name="email" id="email" required>
                        </div>
                        
                        <div class="form-group">
                            <label for="telefone"><i class="fas fa-phone"></i> Telefone</label>
                            <input type="tel" name="telefone" id="telefone" oninput="formatarTelefone(this)">
                        </div>
                        
                        <div class="form-group">
                            <label for="cnpj"><i class="fas fa-id-card"></i> CNPJ (opcional)</label>
                            <input type="text" name="cnpj" id="cnpj" oninput="formatarCNPJ(this)">
                        </div>
                        
                        <button type="submit" class="btn">
                            <i class="fas fa-play-circle"></i> Iniciar Teste Gratuito
                        </button>
                    </form>
                </div>
                
                <div class="terms">
                    <p>Ao se cadastrar, você concorda com nossos <a href="#">Termos de Uso</a> e <a href="#">Política de Privacidade</a>.</p>
                    <p><strong>Limitações do período de teste:</strong> 1 usuário, 10 clientes, 100MB de armazenamento.</p>
                </div>
                
                <div class="login-link">
                    Já tem uma conta? <a href="login.php">Faça login aqui</a>
                </div>
            <?php endif; ?>
        </div>
    </div>

    <script>
        function formatarTelefone(input) {
            let value = input.value.replace(/\D/g, '');
            if (value.length > 11) value = value.substring(0, 11);
            
            if (value.length > 10) {
                value = value.replace(/^(\d{2})(\d{5})(\d{4})$/, '($1) $2-$3');
            } else if (value.length > 6) {
                value = value.replace(/^(\d{2})(\d{4})(\d{4})$/, '($1) $2-$3');
            } else if (value.length > 2) {
                value = value.replace(/^(\d{2})(\d{4})$/, '($1) $2');
            } else if (value.length > 0) {
                value = value.replace(/^(\d{2})$/, '($1)');
            }
            input.value = value;
        }
        
        function formatarCNPJ(input) {
            let value = input.value.replace(/\D/g, '');
            if (value.length > 14) value = value.substring(0, 14);
            
            if (value.length > 12) {
                value = value.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, '$1.$2.$3/$4-$5');
            } else if (value.length > 8) {
                value = value.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})$/, '$1.$2.$3/$4');
            } else if (value.length > 5) {
                value = value.replace(/^(\d{2})(\d{3})(\d{3})$/, '$1.$2.$3');
            } else if (value.length > 2) {
                value = value.replace(/^(\d{2})(\d{3})$/, '$1.$2');
            }
            input.value = value;
        }
        
        document.getElementById('formTeste').addEventListener('submit', function(e) {
            const email = document.getElementById('email').value;
            if (!email.includes('@') || !email.includes('.')) {
                alert('Por favor, insira um e-mail válido.');
                e.preventDefault();
                return false;
            }
            
            const cnpj = document.getElementById('cnpj').value.replace(/\D/g, '');
            if (cnpj && cnpj.length !== 14) {
                alert('CNPJ deve ter 14 dígitos.');
                e.preventDefault();
                return false;
            }
            
            return true;
        });
    </script>
</body>
</html>