<?php
session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// ✅ CORREÇÃO: Usar IDs REAIS do banco de dados
$_SESSION['usuario_id'] = 111; // Usuário DGT REAL
$_SESSION['tenant_id'] = 22;   // Tenant DGT REAL  
$_SESSION['nome_usuario'] = 'usuariodgt@teste.com';
$_SESSION['email_usuario'] = 'usuariodgt@teste.com';

require_once 'conexao.php';
require_once 'verificador_fluxos_automatizados.php';

error_log("
🔍 ===========================================
🔍 DIAGNÓSTICO COMPLETO DA ASSINATURA - DADOS REAIS
🔍 ===========================================");

try {
    // ✅ CORREÇÃO: Usar IDs reais
    $cliente_id = 16; // "Cliente da DGT" - thiagovieira.exact@gmail.com
    $tenant_id = $_SESSION['tenant_id']; // 22
    $usuario_id = $_SESSION['usuario_id']; // 111
    
    error_log("🎯 DADOS DE TESTE (REAIS):");
    error_log("   👤 Usuário ID: $usuario_id");
    error_log("   🏢 Tenant ID: $tenant_id"); 
    error_log("   📋 Cliente ID: $cliente_id");

    // 1. TESTAR CONFIGURAÇÕES DE EMAIL
    error_log("
    1. 📧 TESTANDO CONFIGURAÇÕES DE EMAIL");
    
    $config = carregarConfiguracoesEmailFluxo($conn, $tenant_id, $usuario_id);
    if (!$config) {
        error_log("❌ FALHA CRÍTICA: Configurações de email não carregadas");
        error_log("   Verificando dados do usuário...");
        
        // Verificar se o usuário existe
        $sql_usuario = "SELECT id, nome, email, tenant_id FROM usuarios WHERE id = ? AND tenant_id = ?";
        $stmt = $conn->prepare($sql_usuario);
        $stmt->bind_param("ii", $usuario_id, $tenant_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result->num_rows > 0) {
            $usuario = $result->fetch_assoc();
            error_log("   ✅ Usuário encontrado: {$usuario['nome']} ({$usuario['email']})");
        } else {
            error_log("   ❌ Usuário não encontrado na base de dados");
        }
        $stmt->close();
        exit;
    }
    error_log("✅ SUCESSO: Configurações carregadas");
    error_log("   📧 Remetente: {$config['nome_remetente']}");
    error_log("   📧 Email: {$config['email_remetente']}");
    
    // 2. TESTAR DADOS DA ASSINATURA
    error_log("
    2. 🖋️ TESTANDO DADOS DA ASSINATURA");
    
    $dados_assinatura = carregarDadosAssinatura($conn, $tenant_id, $usuario_id);
    if (!$dados_assinatura) {
        error_log("❌ FALHA CRÍTICA: Dados da assinatura não carregados");
        error_log("   Verifique as tabelas usuarios e tenants");
        exit;
    }
    
    error_log("✅ SUCESSO: Dados da assinatura carregados");
    error_log("   🏢 Tenant: " . ($dados_assinatura['tenant']['nome_tenant'] ?? 'N/A'));
    error_log("   👤 Usuário: " . ($dados_assinatura['usuario']['nome'] ?? 'N/A'));
    error_log("   📧 Email usuário: " . ($dados_assinatura['usuario']['email'] ?? 'N/A'));
    error_log("   📞 Telefone: " . ($dados_assinatura['usuario']['telefone'] ?? 'N/A'));
    error_log("   💼 Cargo: " . ($dados_assinatura['usuario']['cargo'] ?? 'N/A'));
    error_log("   🖼️ Logo: " . ($dados_assinatura['tenant']['logo_path'] ?? 'N/A'));
    
    // 3. TESTAR GERAÇÃO DA ASSINATURA
    error_log("
    3. 🔧 TESTANDO GERAÇÃO DA ASSINATURA");
    
    $assinatura_html = gerarAssinatura($dados_assinatura);
    if (empty($assinatura_html)) {
        error_log("❌ FALHA CRÍTICA: Assinatura HTML não gerada");
        exit;
    }
    
    error_log("✅ SUCESSO: Assinatura HTML gerada");
    error_log("   📏 Tamanho: " . strlen($assinatura_html) . " caracteres");
    error_log("   📝 PRÉVIA DA ASSINATURA (primeiras 300 chars):");
    error_log(substr($assinatura_html, 0, 300) . "...");
    
    // 4. TESTAR APLICAÇÃO DA ASSINATURA
    error_log("
    4. 📝 TESTANDO APLICAÇÃO DA ASSINATURA");
    
    $mensagem_teste = "Olá {cliente_nome},\n\nEste é um email de diagnóstico do sistema de fluxos.\n\nEstamos testando se a assinatura está sendo aplicada corretamente.\n\nAtenciosamente,\nSistema de Diagnóstico";
    $mensagem_com_assinatura = aplicarAssinatura($mensagem_teste, $assinatura_html);
    
    error_log("✅ SUCESSO: Assinatura aplicada à mensagem");
    error_log("   📏 Mensagem original: " . strlen($mensagem_teste) . " chars");
    error_log("   📏 Mensagem com assinatura: " . strlen($mensagem_com_assinatura) . " chars");
    error_log("   🔍 Diferença: " . (strlen($mensagem_com_assinatura) - strlen($mensagem_teste)) . " chars (assinatura)");
    
    // 5. TESTAR SUBSTITUIÇÃO DE VARIÁVEIS
    error_log("
    5. 🔄 TESTANDO SUBSTITUIÇÃO DE VARIÁVEIS");
    
    $mensagem_com_variaveis = substituirVariaveisEmail($mensagem_com_assinatura, $cliente_id, $conn, $tenant_id);
    error_log("✅ SUCESSO: Variáveis substituídas");
    error_log("   📏 Antes: " . strlen($mensagem_com_assinatura) . " chars");
    error_log("   📏 Depois: " . strlen($mensagem_com_variaveis) . " chars");
    
    // 6. TESTAR CONVERSÃO PARA HTML
    error_log("
    6. 🌐 TESTANDO CONVERSÃO PARA HTML");
    
    $mensagem_html = nl2br($mensagem_com_variaveis);
    error_log("✅ SUCESSO: Conversão para HTML realizada");
    error_log("   📏 HTML gerado: " . strlen($mensagem_html) . " caracteres");
    
    // 7. VERIFICAR SE A ASSINATURA ESTÁ NO HTML
    error_log("
    7. 🔎 VERIFICANDO SE ASSINATURA ESTÁ NO HTML FINAL");
    
    $assinatura_detectada = false;
    
    if (strpos($mensagem_html, 'div style') !== false) {
        error_log("✅ ASSINATURA DETECTADA: Contém 'div style'");
        $assinatura_detectada = true;
    } else {
        error_log("❌ ASSINATURA NÃO DETECTADA: Não contém 'div style'");
    }
    
    if (strpos($mensagem_html, 'margin-top: 30px') !== false) {
        error_log("✅ ASSINATURA DETECTADA: Contém CSS 'margin-top: 30px'");
        $assinatura_detectada = true;
    } else {
        error_log("❌ CSS DA ASSINATURA NÃO DETECTADO");
    }
    
    if (strpos($mensagem_html, 'border-top: 2px solid #007bff') !== false) {
        error_log("✅ ASSINATURA DETECTADA: Contém CSS 'border-top'");
        $assinatura_detectada = true;
    }
    
    if (strpos($mensagem_html, 'usuariodgt@teste.com') !== false) {
        error_log("✅ ASSINATURA DETECTADA: Contém email do usuário");
        $assinatura_detectada = true;
    }
    
    if (!$assinatura_detectada) {
        error_log("❌❌❌ ALERTA: ASSINATURA NÃO DETECTADA NO HTML FINAL!");
        error_log("   📝 AMOSTRA DO HTML (últimos 500 chars):");
        error_log(substr($mensagem_html, -500));
    } else {
        error_log("🎉 ASSINATURA DETECTADA COM SUCESSO NO HTML!");
    }
    
    // 8. TESTAR ENVIO REAL
    error_log("
    8. 🚀 TESTANDO ENVIO REAL DE EMAIL");
    
    // Buscar cliente real - VERIFICAR se o cliente 16 existe no tenant 22
    $sql_cliente = "SELECT Nome_Cliente, Email FROM clientes WHERE id = ? AND tenant_id = ?";
    $stmt = $conn->prepare($sql_cliente);
    $stmt->bind_param("ii", $cliente_id, $tenant_id);
    $stmt->execute();
    $cliente = $stmt->get_result()->fetch_assoc();
    $stmt->close();
    
    if (!$cliente) {
        error_log("❌ FALHA: Cliente ID $cliente_id não encontrado no tenant $tenant_id");
        error_log("   Clientes disponíveis no tenant $tenant_id:");
        
        // Listar clientes disponíveis
        $sql_clientes = "SELECT id, Nome_Cliente, Email FROM clientes WHERE tenant_id = ? AND Email IS NOT NULL LIMIT 5";
        $stmt = $conn->prepare($sql_clientes);
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $result = $stmt->get_result();
        
        while ($cliente_lista = $result->fetch_assoc()) {
            error_log("   📋 ID {$cliente_lista['id']}: {$cliente_lista['Nome_Cliente']} - {$cliente_lista['Email']}");
        }
        $stmt->close();
        
        // Usar o primeiro cliente disponível
        $sql_primeiro_cliente = "SELECT id, Nome_Cliente, Email FROM clientes WHERE tenant_id = ? AND Email IS NOT NULL LIMIT 1";
        $stmt = $conn->prepare($sql_primeiro_cliente);
        $stmt->bind_param("i", $tenant_id);
        $stmt->execute();
        $result = $stmt->get_result();
        $cliente = $result->fetch_assoc();
        $stmt->close();
        
        if ($cliente) {
            $cliente_id = $cliente['id'];
            error_log("   🎯 Usando cliente alternativo: ID {$cliente['id']} - {$cliente['Nome_Cliente']}");
        } else {
            error_log("   ❌ Nenhum cliente com email encontrado para este tenant");
            exit;
        }
    }
    
    error_log("✅ Cliente encontrado:");
    error_log("   📋 Nome: {$cliente['Nome_Cliente']}");
    error_log("   📧 Email: {$cliente['Email']}");
    
    $assunto_teste = "🔍 DIAGNÓSTICO Assinatura - " . date('d/m/Y H:i:s');
    
    // Construir email completo
    $email_html = "
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset='UTF-8'>
        <title>Diagnóstico de Assinatura</title>
        <style>
            body { 
                font-family: Arial, sans-serif; 
                line-height: 1.6; 
                color: #333; 
                margin: 0; 
                padding: 20px; 
                background-color: #f9f9f9;
            }
            .container { 
                max-width: 600px; 
                margin: 0 auto; 
                background: white; 
                padding: 20px; 
                border-radius: 8px; 
                box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            }
        </style>
    </head>
    <body>
        <div class='container'>
            " . $mensagem_html . "
        </div>
    </body>
    </html>";
    
    error_log("📧 Email HTML construído:");
    error_log("   📏 Tamanho total: " . strlen($email_html) . " caracteres");
    
    // Log final antes do envio
    error_log("
    🎯 RESUMO FINAL ANTES DO ENVIO:");
    error_log("   ✅ Configurações: Carregadas");
    error_log("   ✅ Assinatura: " . ($assinatura_detectada ? 'DETECTADA no HTML' : 'NÃO DETECTADA'));
    error_log("   ✅ Cliente: {$cliente['Nome_Cliente']} ({$cliente['Email']})");
    error_log("   ✅ Remetente: {$config['nome_remetente']}");
    
    // Enviar email
    error_log("
    📤 ENVIANDO EMAIL...");
    $enviado = enviarEmailFluxoMail([$cliente['Email']], $assunto_teste, $email_html, $config);
    
    if ($enviado) {
        error_log("✅ ✅ ✅ EMAIL ENVIADO COM SUCESSO!");
        error_log("   📧 Verifique a caixa de entrada de: " . $cliente['Email']);
        error_log("   🔍 Procure por: '$assunto_teste'");
        
        echo "<h3 style='color: green;'>✅ Diagnóstico Completo - EMAIL ENVIADO!</h3>";
        echo "<p>Verifique os logs do PHP para detalhes.</p>";
        echo "<p>Email enviado para: <strong>{$cliente['Email']}</strong></p>";
        echo "<p>Assunto: <strong>$assunto_teste</strong></p>";
        if ($assinatura_detectada) {
            echo "<p style='color: green;'>✅ Assinatura detectada no HTML</p>";
        } else {
            echo "<p style='color: red;'>❌ Assinatura NÃO detectada no HTML</p>";
        }
    } else {
        error_log("❌ ❌ ❌ FALHA NO ENVIO DO EMAIL");
        error_log("   💡 Verifique a configuração do servidor de email");
        
        echo "<h3 style='color: red;'>❌ Falha no Envio do Email</h3>";
        echo "<p>Verifique os logs do PHP para detalhes do erro.</p>";
    }
    
} catch (Exception $e) {
    error_log("❌ ERRO NO DIAGNÓSTICO: " . $e->getMessage());
    error_log("🔧 Stack trace: " . $e->getTraceAsString());
    
    echo "<h3 style='color: red;'>❌ Erro no Diagnóstico</h3>";
    echo "<p><strong>Erro:</strong> " . $e->getMessage() . "</p>";
    echo "<p>Verifique os logs do PHP para detalhes.</p>";
}
?>