<?php
/**
 * SCRIPT PARA EXECUTAR RECUPERAÇÃO AUTOMÁTICA DE CLIENTES PERDIDOS
 * E PROCESSAR EMAILS AGENDADOS
 * 
 * Configurar no cron:
 * 1. Recuperação de clientes: 0 8 * * * (todos os dias às 8h)
 * 2. Emails agendados: */15 * * * * (a cada 15 minutos)
 */

// Configurações
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', __DIR__ . '/logs_cron.log');
date_default_timezone_set('America/Sao_Paulo');

echo "=========================================\n";
echo "INICIANDO EXECUÇÃO AUTOMÁTICA\n";
echo "Data/Hora: " . date('Y-m-d H:i:s') . "\n";
echo "=========================================\n";

// Caminhos dos arquivos
$base_path = dirname(__FILE__) . '/';
$conexao_file = $base_path . 'conexao.php';
$verificador_file = $base_path . 'verificador_fluxos_automatizados_corrigido.php';

// Verificar arquivos
if (!file_exists($conexao_file)) {
    echo "❌ ERRO: Arquivo conexao.php não encontrado\n";
    exit(1);
}

if (!file_exists($verificador_file)) {
    echo "❌ ERRO: Arquivo verificador_fluxos_automatizados.php não encontrado\n";
    exit(1);
}

try {
    // Carregar dependências
    require_once $conexao_file;
    require_once $verificador_file;
    
    echo "✅ Dependências carregadas\n";
    
    // Conectar ao banco
    $conn = conectarBancoDados();
    
    if (!$conn) {
        throw new Exception("Falha ao conectar ao banco de dados");
    }
    
    echo "✅ Conexão com banco estabelecida\n";
    
    // Obter parâmetro da linha de comando
    $acao = $argv[1] ?? 'todos'; // 'recuperacao', 'emails', 'todos'
    
    $total_recuperados = 0;
    $total_emails = 0;
    
    // Buscar todos os tenants ativos
    $sql_tenants = "SELECT id, nome FROM tenants WHERE ativo = 1";
    $result_tenants = $conn->query($sql_tenants);
    
    if (!$result_tenants) {
        throw new Exception("Erro na consulta de tenants: " . $conn->error);
    }
    
    while ($tenant = $result_tenants->fetch_assoc()) {
        $tenant_id = $tenant['id'];
        $tenant_nome = $tenant['nome'];
        
        echo "\n🏢 Processando tenant: $tenant_nome (ID: $tenant_id)\n";
        
        // Configurar sessão para o tenant
        $_SESSION['tenant_id'] = $tenant_id;
        $_SESSION['usuario_id'] = 1; // Usuário sistema
        $_SESSION['nome_usuario'] = 'Sistema';
        $_SESSION['email_usuario'] = 'sistema@son.com';
        
        // Executar ações conforme parâmetro
        if ($acao === 'recuperacao' || $acao === 'todos') {
            echo "🔄 Executando recuperação de clientes perdidos...\n";
            $recuperados = verificarERecuperarClientesPerdidos($conn);
            $total_recuperados += $recuperados;
            echo "📊 $tenant_nome: $recuperados clientes recuperados\n";
        }
        
        if ($acao === 'emails' || $acao === 'todos') {
            echo "📧 Processando emails agendados...\n";
            $emails = processarEmailsAgendados($conn);
            $total_emails += $emails;
            echo "📊 $tenant_nome: $emails emails processados\n";
        }
        
        // Limpar sessão
        unset($_SESSION['tenant_id'], $_SESSION['usuario_id']);
    }
    
    $conn->close();
    
    echo "\n=========================================\n";
    echo "RESUMO DA EXECUÇÃO:\n";
    echo "-----------------------------------------\n";
    
    if ($acao === 'recuperacao' || $acao === 'todos') {
        echo "Clientes recuperados: $total_recuperados\n";
    }
    
    if ($acao === 'emails' || $acao === 'todos') {
        echo "Emails processados: $total_emails\n";
    }
    
    echo "=========================================\n";
    echo "EXECUÇÃO CONCLUÍDA COM SUCESSO!\n";
    
    exit(0);
    
} catch (Exception $e) {
    echo "❌ ERRO CRÍTICO: " . $e->getMessage() . "\n";
    echo "Stack trace: " . $e->getTraceAsString() . "\n";
    exit(1);
}
?>