<?php
/**
 * Script para execução via cron job
 * Executa detecção automática de notas fiscais para todos os tenants
 * 
 * Uso no crontab:
 * */15 * * * * /usr/bin/php /caminho/para/scripts/nfe-deteccao-cron.php
 * (Executa a cada 15 minutos)
 */

require_once __DIR__ . '/../bootstrap.php';

use Gestoreasy\Core\Tenant\TenantAdmin;
use Gestoreasy\Core\Tenant\ConnectionManager;
use Gestoreasy\Core\Tenant\TenantContext;
use Modules\Fiscal\Services\NFeDeteccaoService;

// Listar todos os tenants
$tenants = TenantAdmin::listTenants();

echo "[" . date('Y-m-d H:i:s') . "] Iniciando detecção automática de notas fiscais\n";
echo "Tenants encontrados: " . count($tenants) . "\n\n";

foreach ($tenants as $tenantId) {
    try {
        echo "[$tenantId] Verificando detecção automática...\n";
        
        // Definir contexto do tenant
        $_SERVER['HTTP_X_TENANT_ID'] = $tenantId;
        
        // Usar Reflection para definir tenant no TenantContext (similar ao gestory-cron)
        try {
            $reflection = new \ReflectionClass(TenantContext::class);
            $property = $reflection->getProperty('tenantId');
            $property->setAccessible(true);
            $property->setValue(null, $tenantId);
        } catch (\Exception $e) {
            // Se não conseguir, continuar mesmo assim
        }
        
        try {
            // Criar serviço (ele usa TenantContext que agora está configurado)
            $service = new NFeDeteccaoService();
            $resultado = $service->executar();
            
            echo "[$tenantId] Resultado: {$resultado['detectadas']} detectadas, {$resultado['processadas']} processadas, {$resultado['erros']} erros\n";
            echo "[$tenantId] Mensagem: {$resultado['mensagem']}\n";
            echo "\n";
        } catch (\Exception $e) {
            echo "[$tenantId] ERRO: " . $e->getMessage() . "\n\n";
            error_log("[NFe Detecção Cron] Erro para tenant $tenantId: " . $e->getMessage());
        }
    } catch (\Exception $e) {
        echo "[$tenantId] ERRO: " . $e->getMessage() . "\n\n";
        error_log("[NFe Detecção Cron] Erro para tenant $tenantId: " . $e->getMessage());
    }
}

echo "[" . date('Y-m-d H:i:s') . "] Detecção automática concluída\n";

