<?php
// Script de teste para verificar se a correção automática está funcionando

require_once 'config/database.php';

function testarConsultaViagemPorVeiculoData($pdo, $veiculoId, $data) {
    echo "🔍 TESTANDO CONSULTA VIAGEM POR VEÍCULO/DATA\n";
    echo "   - Veículo ID: $veiculoId\n";
    echo "   - Data: $data\n\n";
    
    $sql = "SELECT 
                v.id,
                v.cliente,
                v.motivo,
                v.veiculo_id,
                v.data_inicio,
                v.data_fim
            FROM viagens v
            WHERE v.veiculo_id = ? 
            AND DATE(v.data_inicio) = ?
            ORDER BY v.data_inicio DESC 
            LIMIT 1";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$veiculoId, $data]);
    $viagem = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($viagem) {
        echo "✅ VIAGEM ENCONTRADA:\n";
        echo "   - ID: {$viagem['id']}\n";
        echo "   - Cliente: {$viagem['cliente']}\n";
        echo "   - Motivo: {$viagem['motivo']}\n";
        echo "   - Data início: {$viagem['data_inicio']}\n";
        return $viagem['id'];
    } else {
        echo "❌ NENHUMA VIAGEM ENCONTRADA\n";
        
        // Buscar viagens próximas para debug
        $sqlDebug = "SELECT id, cliente, data_inicio, veiculo_id
                     FROM viagens 
                     WHERE veiculo_id = ? 
                     AND DATE(data_inicio) BETWEEN DATE(?) - INTERVAL 2 DAY AND DATE(?) + INTERVAL 2 DAY
                     ORDER BY data_inicio DESC 
                     LIMIT 5";
        
        $stmtDebug = $pdo->prepare($sqlDebug);
        $stmtDebug->execute([$veiculoId, $data, $data]);
        $viagensProximas = $stmtDebug->fetchAll(PDO::FETCH_ASSOC);
        
        if (!empty($viagensProximas)) {
            echo "\n📊 VIAGENS PRÓXIMAS (±2 dias):\n";
            foreach ($viagensProximas as $v) {
                echo "   - ID: {$v['id']}, Cliente: {$v['cliente']}, Data: {$v['data_inicio']}\n";
            }
        }
        
        return null;
    }
}

function simularChecklistComCorrecao($pdo, $viagemIdLocal, $veiculoId, $dataHora) {
    echo "\n🧪 SIMULANDO CHECKLIST COM CORREÇÃO AUTOMÁTICA\n";
    echo "   - Viagem ID local (app): $viagemIdLocal\n";
    echo "   - Veículo ID: $veiculoId\n";
    echo "   - Data/Hora: $dataHora\n\n";
    
    // Simular a lógica de correção automática
    $dataFormatada = date('Y-m-d', strtotime($dataHora));
    
    // Buscar viagem real no servidor
    $viagemIdReal = testarConsultaViagemPorVeiculoData($pdo, $veiculoId, $dataFormatada);
    
    if ($viagemIdReal) {
        echo "\n✅ CORREÇÃO AUTOMÁTICA FUNCIONARIA:\n";
        echo "   - App enviaria: viagemId=$viagemIdLocal\n";
        echo "   - Sistema corrigiria para: viagemId=$viagemIdReal\n";
        echo "   - Checklist seria salvo com ID correto!\n";
        return true;
    } else {
        echo "\n❌ CORREÇÃO AUTOMÁTICA FALHARIA:\n";
        echo "   - Não foi possível encontrar viagem real no servidor\n";
        echo "   - Checklist seria salvo com ID local (incorreto)\n";
        return false;
    }
}

function verificarEstadoAtual($pdo) {
    echo "📊 VERIFICANDO ESTADO ATUAL DO SISTEMA\n";
    echo "=====================================\n\n";
    
    // 1. Verificar checklists com problemas
    $sql = "SELECT COUNT(*) as total
            FROM checklist_veiculo c
            LEFT JOIN viagens v ON c.viagem_id = v.id
            WHERE v.id IS NULL";
    
    $stmt = $pdo->query($sql);
    $resultado = $stmt->fetch(PDO::FETCH_ASSOC);
    
    echo "1. CHECKLISTS COM PROBLEMAS: {$resultado['total']}\n";
    
    // 2. Últimas viagens
    $sql = "SELECT id, veiculo_id, cliente, data_inicio
            FROM viagens 
            ORDER BY data_inicio DESC 
            LIMIT 5";
    
    $stmt = $pdo->query($sql);
    $ultimasViagens = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "\n2. ÚLTIMAS 5 VIAGENS:\n";
    foreach ($ultimasViagens as $v) {
        echo "   - ID: {$v['id']}, Veículo: {$v['veiculo_id']}, Cliente: {$v['cliente']}, Data: {$v['data_inicio']}\n";
    }
    
    // 3. Últimos checklists
    $sql = "SELECT c.id, c.viagem_id, c.veiculo_id, c.data_hora, v.cliente
            FROM checklist_veiculo c
            LEFT JOIN viagens v ON c.viagem_id = v.id
            ORDER BY c.data_hora DESC 
            LIMIT 5";
    
    $stmt = $pdo->query($sql);
    $ultimosChecklists = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "\n3. ÚLTIMOS 5 CHECKLISTS:\n";
    foreach ($ultimosChecklists as $c) {
        $status = $c['cliente'] ? '✅ OK' : '❌ PROBLEMA';
        echo "   - ID: {$c['id']}, Viagem: {$c['viagem_id']}, Veículo: {$c['veiculo_id']}, Status: $status\n";
    }
    
    return $ultimasViagens;
}

// ===== EXECUÇÃO DO TESTE =====

try {
    $pdo = conectarBanco();
    
    echo "🚀 INICIANDO TESTE DE CORREÇÃO AUTOMÁTICA\n";
    echo "==========================================\n\n";
    
    // Verificar estado atual
    $ultimasViagens = verificarEstadoAtual($pdo);
    
    echo "\n" . str_repeat("=", 50) . "\n";
    echo "🧪 TESTE DE SIMULAÇÃO\n";
    echo str_repeat("=", 50) . "\n\n";
    
    // Simular cenários de teste com dados reais
    if (!empty($ultimasViagens)) {
        $viagemExemplo = $ultimasViagens[0]; // Pegar a viagem mais recente
        
        echo "📋 CENÁRIO 1: Viagem recente existente\n";
        echo "--------------------------------------\n";
        
        $sucesso1 = simularChecklistComCorrecao(
            $pdo,
            999, // ID local simulado
            $viagemExemplo['veiculo_id'],
            $viagemExemplo['data_inicio']
        );
        
        echo "\n📋 CENÁRIO 2: Viagem de hoje (se existir)\n";
        echo "------------------------------------------\n";
        
        $hoje = date('Y-m-d');
        $sucesso2 = simularChecklistComCorrecao(
            $pdo,
            888, // ID local simulado
            $viagemExemplo['veiculo_id'],
            $hoje . ' 18:00:00'
        );
        
        echo "\n📊 RESULTADO DOS TESTES:\n";
        echo "========================\n";
        echo "Cenário 1 (viagem existente): " . ($sucesso1 ? "✅ PASSOU" : "❌ FALHOU") . "\n";
        echo "Cenário 2 (viagem de hoje): " . ($sucesso2 ? "✅ PASSOU" : "❌ FALHOU") . "\n";
        
        if ($sucesso1 || $sucesso2) {
            echo "\n🎉 CORREÇÃO AUTOMÁTICA ESTÁ FUNCIONANDO!\n";
            echo "   - Novos checklists serão salvos com IDs corretos\n";
            echo "   - Pode fazer uma nova viagem no app com segurança\n";
        } else {
            echo "\n⚠️  CORREÇÃO AUTOMÁTICA PODE TER PROBLEMAS\n";
            echo "   - Verifique se há viagens recentes no sistema\n";
            echo "   - Teste com uma viagem real para confirmar\n";
        }
    } else {
        echo "⚠️  Nenhuma viagem encontrada para teste\n";
        echo "   - Faça uma viagem no app primeiro\n";
        echo "   - Depois execute este teste novamente\n";
    }
    
    echo "\n✅ TESTE CONCLUÍDO!\n";
    
} catch (Exception $e) {
    echo "❌ ERRO NO TESTE: " . $e->getMessage() . "\n";
}
?> 
