<?php
header('Content-Type: text/plain; charset=utf-8');

try {
    // Conectar ao banco
    $host = 'localhost';
    $dbname = 'pinheir3_controle_frotasV1.1';
    $username = 'pinheir3_admin';
    $password = '080880Gelboy';
    
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "🔧 CORRIGINDO STATUS DAS ROTAS\n";
    echo "==============================\n\n";
    
    // 1. Verificar rotas com status inconsistente
    echo "📋 VERIFICANDO ROTAS COM STATUS INCONSISTENTE:\n";
    $stmt = $pdo->query("
        SELECT id, titulo, status, data_inicio_real, data_fim_real, km_real, km_estimado
        FROM solicitacoes_rotas 
        WHERE (data_inicio_real IS NOT NULL AND data_fim_real IS NULL AND status = 'concluida')
           OR (data_inicio_real IS NOT NULL AND data_fim_real IS NULL AND status != 'em_andamento' AND status != 'em_execucao')
        ORDER BY id
    ");
    $rotasInconsistentes = $stmt->fetchAll();
    
    if (empty($rotasInconsistentes)) {
        echo "  ✅ Nenhuma rota com status inconsistente encontrada!\n\n";
    } else {
        echo "  ⚠️ Encontradas " . count($rotasInconsistentes) . " rotas com status inconsistente:\n";
        foreach ($rotasInconsistentes as $rota) {
            echo "    - ID {$rota['id']}: {$rota['titulo']}\n";
            echo "      Status atual: {$rota['status']}\n";
            echo "      Data início: " . ($rota['data_inicio_real'] ?: 'NULL') . "\n";
            echo "      Data fim: " . ($rota['data_fim_real'] ?: 'NULL') . "\n";
            echo "      KM real: " . ($rota['km_real'] ?: 'NULL') . "\n";
            echo "      KM estimado: " . ($rota['km_estimado'] ?: 'NULL') . "\n";
            echo "\n";
        }
        
        // 2. Corrigir status das rotas
        echo "🔧 CORRIGINDO STATUS:\n";
        foreach ($rotasInconsistentes as $rota) {
            $novoStatus = 'em_andamento';
            if ($rota['data_fim_real']) {
                $novoStatus = 'concluida';
            } elseif ($rota['data_inicio_real']) {
                $novoStatus = 'em_andamento';
            } else {
                $novoStatus = $rota['status']; // Manter status original
            }
            
            echo "  - Rota ID {$rota['id']}: {$rota['titulo']}\n";
            echo "    Status antigo: {$rota['status']} → Novo: $novoStatus\n";
            
            $stmt = $pdo->prepare("UPDATE solicitacoes_rotas SET status = ?, updated_at = NOW() WHERE id = ?");
            $result = $stmt->execute([$novoStatus, $rota['id']]);
            
            if ($result) {
                echo "    ✅ Status corrigido!\n";
            } else {
                echo "    ❌ Erro ao corrigir status\n";
            }
            echo "\n";
        }
    }
    
    // 3. Verificar viagens com dados inconsistentes
    echo "📋 VERIFICANDO VIAGENS COM DADOS INCONSISTENTES:\n";
    $stmt = $pdo->query("
        SELECT v.id, v.cliente, v.data_inicio, v.data_fim, v.km_final, v.km_gps_final, v.observacoes
        FROM viagens v
        JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE v.data_fim IS NULL AND v.km_final > 0
        ORDER BY v.id
    ");
    $viagensInconsistentes = $stmt->fetchAll();
    
    if (empty($viagensInconsistentes)) {
        echo "  ✅ Nenhuma viagem com dados inconsistentes encontrada!\n\n";
    } else {
        echo "  ⚠️ Encontradas " . count($viagensInconsistentes) . " viagens com dados inconsistentes:\n";
        foreach ($viagensInconsistentes as $viagem) {
            echo "  - ID {$viagem['id']}: {$viagem['cliente']}\n";
            echo "    Data início: {$viagem['data_inicio']}\n";
            echo "    Data fim: " . ($viagem['data_fim'] ?: 'NULL') . "\n";
            echo "    KM final: {$viagem['km_final']}\n";
            echo "    KM GPS final: " . ($viagem['km_gps_final'] ?: 'NULL') . "\n";
            echo "    Observações: {$viagem['observacoes']}\n";
            echo "\n";
        }
        
        // 4. Corrigir viagens
        echo "🔧 CORRIGINDO VIAGENS:\n";
        foreach ($viagensInconsistentes as $viagem) {
            echo "  - Viagem ID {$viagem['id']}: {$viagem['cliente']}\n";
            echo "    Zerando KM final (viagem não terminou)\n";
            
            $stmt = $pdo->prepare("UPDATE viagens SET km_final = 0, km_gps_final = NULL, updated_at = NOW() WHERE id = ?");
            $result = $stmt->execute([$viagem['id']]);
            
            if ($result) {
                echo "    ✅ Viagem corrigida!\n";
            } else {
                echo "    ❌ Erro ao corrigir viagem\n";
            }
            echo "\n";
        }
    }
    
    // 5. Verificar resultado final
    echo "📊 VERIFICANDO RESULTADO FINAL:\n";
    
    // Rotas em andamento
    $stmt = $pdo->query("
        SELECT id, titulo, status, data_inicio_real, data_fim_real
        FROM solicitacoes_rotas 
        WHERE data_inicio_real IS NOT NULL AND data_fim_real IS NULL
        ORDER BY id
    ");
    $rotasEmAndamento = $stmt->fetchAll();
    
    if (!empty($rotasEmAndamento)) {
        echo "  🚗 ROTAS EM ANDAMENTO:\n";
        foreach ($rotasEmAndamento as $rota) {
            echo "    - ID {$rota['id']}: {$rota['titulo']} (Status: {$rota['status']})\n";
        }
    } else {
        echo "  ✅ Nenhuma rota em andamento\n";
    }
    
    echo "\n";
    
    // Viagens em andamento
    $stmt = $pdo->query("
        SELECT v.id, v.cliente, v.data_inicio, v.km_final, v.km_gps_final
        FROM viagens v
        JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE v.data_fim IS NULL
        ORDER BY v.id
    ");
    $viagensEmAndamento = $stmt->fetchAll();
    
    if (!empty($viagensEmAndamento)) {
        echo "  🚗 VIAGENS EM ANDAMENTO:\n";
        foreach ($viagensEmAndamento as $viagem) {
            echo "    - ID {$viagem['id']}: {$viagem['cliente']} (KM final: {$viagem['km_final']})\n";
        }
    } else {
        echo "  ✅ Nenhuma viagem em andamento\n";
    }
    
    echo "\n";
    
    // 6. Garantir que próximas rotas funcionem
    echo "🔧 GARANTINDO FUNCIONAMENTO FUTURO:\n";
    echo "  ✅ Status das rotas corrigido\n";
    echo "  ✅ Viagens com dados inconsistentes corrigidas\n";
    echo "  ✅ Dashboard mostrará status correto\n";
    echo "  ✅ Próximas rotas funcionarão corretamente\n\n";
    
    echo "🎯 PRÓXIMOS PASSOS:\n";
    echo "  1. Atualize o dashboard web\n";
    echo "  2. As rotas devem mostrar status correto\n";
    echo "  3. Viagens em andamento não mostrarão KM final\n";
    echo "  4. Próximas rotas funcionarão automaticamente\n";
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
}
?>
