<?php
require_once 'config/database.php';

echo "=== TESTE ESPECÍFICO DO BUG ===\n\n";

// Dados exatos do caso do usuário
$viagemIdLocal = 15;  // ID incorreto que o app enviou
$veiculoId = 6;       // ID do veículo
$dataHoraChecklist = "2025-07-04 17:53:39";  // Data/hora do checklist
$viagemIdEsperado = 102;  // ID da viagem que deveria ser usada

echo "📋 DADOS DO CASO:\n";
echo "- App enviou viagemId: $viagemIdLocal\n";
echo "- Veículo: $veiculoId\n";
echo "- Data/hora checklist: $dataHoraChecklist\n";
echo "- Viagem esperada: $viagemIdEsperado\n\n";

try {
    $pdo = new PDO($dsn, $username, $password, $options);
    
    // Simular exatamente a lógica do api-checklist-v3.php
    $dataChecklist = date('Y-m-d', strtotime($dataHoraChecklist));
    echo "🔍 SIMULANDO LÓGICA DE BUSCA:\n";
    echo "Data extraída: $dataChecklist\n\n";
    
    // 1. TESTE 1: Buscar viagem pelo veículo no mesmo dia
    echo "1️⃣ TESTE 1 - Mesmo veículo, mesmo dia:\n";
    $sql1 = "SELECT id, data_inicio, veiculo_id, cliente FROM viagens 
             WHERE veiculo_id = ? 
             AND DATE(data_inicio) = ? 
             ORDER BY data_inicio DESC 
             LIMIT 1";
    
    $stmt = $pdo->prepare($sql1);
    $stmt->execute([$veiculoId, $dataChecklist]);
    $resultado1 = $stmt->fetch();
    
    echo "SQL: $sql1\n";
    echo "Parâmetros: [$veiculoId, $dataChecklist]\n";
    
    if ($resultado1) {
        echo "✅ ENCONTROU: ID {$resultado1['id']}, Cliente: {$resultado1['cliente']}, Data: {$resultado1['data_inicio']}\n";
        if ($resultado1['id'] == $viagemIdEsperado) {
            echo "🎯 PERFEITO! Encontrou a viagem esperada ($viagemIdEsperado)\n";
        } else {
            echo "⚠️ ATENÇÃO: Encontrou viagem {$resultado1['id']}, mas esperava $viagemIdEsperado\n";
        }
    } else {
        echo "❌ NÃO ENCONTROU viagem\n";
    }
    
    // 2. TESTE 2: Buscar viagem pelo veículo hoje (CURDATE)
    echo "\n2️⃣ TESTE 2 - Mesmo veículo, hoje (CURDATE):\n";
    $sql2 = "SELECT id, data_inicio, veiculo_id, cliente FROM viagens 
             WHERE veiculo_id = ? 
             AND DATE(data_inicio) = CURDATE() 
             ORDER BY data_inicio DESC 
             LIMIT 1";
    
    $stmt = $pdo->prepare($sql2);
    $stmt->execute([$veiculoId]);
    $resultado2 = $stmt->fetch();
    
    echo "SQL: $sql2\n";
    echo "Parâmetros: [$veiculoId]\n";
    
    if ($resultado2) {
        echo "✅ ENCONTROU: ID {$resultado2['id']}, Cliente: {$resultado2['cliente']}, Data: {$resultado2['data_inicio']}\n";
        if ($resultado2['id'] == $viagemIdEsperado) {
            echo "🎯 PERFEITO! Encontrou a viagem esperada ($viagemIdEsperado)\n";
        } else {
            echo "⚠️ ATENÇÃO: Encontrou viagem {$resultado2['id']}, mas esperava $viagemIdEsperado\n";
        }
    } else {
        echo "❌ NÃO ENCONTROU viagem\n";
    }
    
    // 3. VERIFICAR VIAGEM ESPECÍFICA (ID 102)
    echo "\n3️⃣ VERIFICAÇÃO DA VIAGEM ID 102:\n";
    $sql3 = "SELECT id, data_inicio, veiculo_id, cliente, 
                    DATE(data_inicio) as data_only,
                    TIME(data_inicio) as time_only
             FROM viagens 
             WHERE id = ?";
    
    $stmt = $pdo->prepare($sql3);
    $stmt->execute([$viagemIdEsperado]);
    $viagem102 = $stmt->fetch();
    
    if ($viagem102) {
        echo "✅ VIAGEM 102 EXISTE:\n";
        echo "   ID: {$viagem102['id']}\n";
        echo "   Veículo: {$viagem102['veiculo_id']}\n";
        echo "   Cliente: {$viagem102['cliente']}\n";
        echo "   Data/hora completa: {$viagem102['data_inicio']}\n";
        echo "   Data apenas: {$viagem102['data_only']}\n";
        echo "   Hora apenas: {$viagem102['time_only']}\n";
        
        // Verificar se corresponde aos critérios
        echo "\n🔍 VERIFICAÇÃO DOS CRITÉRIOS:\n";
        echo "   Veículo correto? " . ($viagem102['veiculo_id'] == $veiculoId ? "✅ SIM" : "❌ NÃO") . "\n";
        echo "   Data correta? " . ($viagem102['data_only'] == $dataChecklist ? "✅ SIM" : "❌ NÃO") . "\n";
        
        if ($viagem102['veiculo_id'] == $veiculoId && $viagem102['data_only'] == $dataChecklist) {
            echo "🎯 CONCLUSÃO: A viagem 102 DEVERIA ser encontrada!\n";
        } else {
            echo "⚠️ CONCLUSÃO: A viagem 102 NÃO atende aos critérios de busca\n";
        }
    } else {
        echo "❌ VIAGEM 102 NÃO EXISTE\n";
    }
    
    // 4. TESTE DE TIMEZONE
    echo "\n4️⃣ TESTE DE TIMEZONE:\n";
    $stmt = $pdo->query("SELECT NOW() as now_server, CURDATE() as curdate_server, DATE('$dataHoraChecklist') as date_parsed");
    $timezone = $stmt->fetch();
    
    echo "Servidor NOW(): {$timezone['now_server']}\n";
    echo "Servidor CURDATE(): {$timezone['curdate_server']}\n";
    echo "Data parseada: {$timezone['date_parsed']}\n";
    
    // 5. DIAGNÓSTICO FINAL
    echo "\n🎯 DIAGNÓSTICO FINAL:\n";
    echo "==================\n";
    
    if ($resultado1 || $resultado2) {
        $viagemEncontrada = $resultado1 ? $resultado1['id'] : $resultado2['id'];
        echo "✅ A lógica ENCONTROU uma viagem: ID $viagemEncontrada\n";
        
        if ($viagemEncontrada == $viagemIdEsperado) {
            echo "🎯 SUCESSO! A viagem encontrada é a esperada ($viagemIdEsperado)\n";
            echo "❓ PROBLEMA: Por que o checklist foi salvo com ID $viagemIdLocal?\n";
            echo "   POSSÍVEL CAUSA: Erro após a busca, ou fallback sendo usado\n";
        } else {
            echo "⚠️ PROBLEMA: Encontrou viagem $viagemEncontrada, mas esperava $viagemIdEsperado\n";
            echo "   POSSÍVEL CAUSA: Múltiplas viagens do mesmo veículo no mesmo dia\n";
        }
    } else {
        echo "❌ A lógica NÃO ENCONTROU nenhuma viagem\n";
        echo "   POSSÍVEL CAUSA: Problema de timezone, data, ou critérios muito restritivos\n";
    }
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
}

echo "\n=== FIM DO TESTE ===\n";
?> 
