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

echo "<pre>";
echo "🔍 DIAGNÓSTICO DETALHADO DOS E-MAILS AGENDADOS\n";
echo "=============================================\n\n";

// Carregar conexão
require_once 'conexao.php';

// Usar criarConexaoBanco para evitar conflitos
$conn = criarConexaoBanco();
if (!$conn) {
    die("❌ Não foi possível conectar ao banco\n");
}

// 1. Verificar TODOS os e-mails
echo "1. 📋 TODOS OS E-MAILS AGENDADOS:\n";
$sql = "SELECT id, assunto, destinatario_email, data_agendamento, data_envio, status,
        TIMESTAMPDIFF(SECOND, NOW(), data_agendamento) as segundos_dif,
        CASE 
            WHEN data_agendamento <= NOW() THEN 'PRONTO'
            ELSE 'AGUARDANDO'
        END as situacao
        FROM emails_agendados 
        ORDER BY id ASC";
        
$result = $conn->query($sql);

echo "ID | Assunto | Para | Agendado | Enviado | Status | Situação | Segundos\n";
echo "-----------------------------------------------------------------------\n";

while ($row = $result->fetch_assoc()) {
    printf("%-2d | %-7s | %-30s | %s | %s | %-9s | %-9s | %d\n",
        $row['id'],
        substr($row['assunto'], 0, 7),
        substr($row['destinatario_email'], 0, 30),
        substr($row['data_agendamento'], 11, 8),
        $row['data_envio'] ? substr($row['data_envio'], 11, 8) : 'NULL',
        $row['status'],
        $row['situacao'],
        $row['segundos_dif']
    );
}

// 2. Verificar quantos estão prontos para enviar
echo "\n2. 📧 E-MAILS PRONTOS PARA ENVIAR (data_agendamento <= NOW()):\n";
$sql = "SELECT COUNT(*) as total FROM emails_agendados 
        WHERE status = 'agendado' 
        AND data_agendamento <= NOW()";
        
$result = $conn->query($sql);
$row = $result->fetch_assoc();
echo "Total: " . $row['total'] . " e-mails\n";

// 3. Mostrar detalhes dos prontos
if ($row['total'] > 0) {
    echo "\n3. 📄 DETALHES DOS E-MAILS PRONTOS:\n";
    $sql = "SELECT id, assunto, destinatario_email, data_agendamento 
            FROM emails_agendados 
            WHERE status = 'agendado' 
            AND data_agendamento <= NOW()
            ORDER BY data_agendamento ASC";
            
    $result = $conn->query($sql);
    while ($row = $result->fetch_assoc()) {
        echo "   ID {$row['id']}: '{$row['assunto']}' para {$row['destinatario_email']}\n";
        echo "      Agendado: {$row['data_agendamento']}\n";
    }
}

// 4. Testar a query do processador
echo "\n4. 🔧 TESTANDO A QUERY DO PROCESSADOR:\n";
$sql = "SELECT ea.*, c.Nome_Cliente, c.Email as cliente_email 
        FROM emails_agendados ea
        LEFT JOIN clientes c ON ea.cliente_id = c.id
        WHERE ea.status = 'agendado' 
        AND ea.data_agendamento <= NOW()
        ORDER BY ea.data_agendamento ASC
        LIMIT 10";
        
$result = $conn->query($sql);

if (!$result) {
    echo "❌ Erro na query: " . $conn->error . "\n";
} else {
    echo "✅ Query executada com sucesso\n";
    echo "   Retornou: " . $result->num_rows . " registros\n";
    
    if ($result->num_rows > 0) {
        echo "   IDs encontrados: ";
        $ids = [];
        while ($row = $result->fetch_assoc()) {
            $ids[] = $row['id'];
        }
        echo implode(', ', $ids) . "\n";
    }
}

// 5. Verificar problemas com JOIN (cliente pode não existir)
echo "\n5. 🔍 VERIFICANDO PROBLEMAS DE JOIN:\n";
$sql = "SELECT ea.id, ea.cliente_id, c.Nome_Cliente, c.Email
        FROM emails_agendados ea
        LEFT JOIN clientes c ON ea.cliente_id = c.id
        WHERE ea.status = 'agendado' 
        AND ea.data_agendamento <= NOW()";
        
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
    echo "   ID {$row['id']}: Cliente ID {$row['cliente_id']} - ";
    if ($row['Nome_Cliente']) {
        echo "✅ Encontrado: {$row['Nome_Cliente']}\n";
    } else {
        echo "❌ NÃO ENCONTRADO na tabela clientes!\n";
    }
}

$conn->close();
echo "\n✅ Diagnóstico concluído!\n";
echo "</pre>";
?>