<?php
// Script para diagnosticar e corrigir problemas com veículos
header('Content-Type: text/plain; charset=utf-8');

try {
    // Conectar com as credenciais corretas
    $pdo = new PDO(
        "mysql:host=localhost;dbname=pinheir3_controle_frotasV1.1;charset=utf8mb4",
        "pinheir3_admin",
        "080880Gelboy",
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    
    echo "🔧 DIAGNÓSTICO E CORREÇÃO DE VEÍCULOS\n";
    echo "===================================\n\n";
    
    // 1. VERIFICAR STATUS ATUAL DOS VEÍCULOS
    echo "1️⃣ STATUS ATUAL DOS VEÍCULOS:\n";
    $stmt = $pdo->query("SELECT id, modelo, placa, status FROM veiculos ORDER BY id");
    $veiculos = $stmt->fetchAll();
    
    if (empty($veiculos)) {
        echo "❌ NENHUM VEÍCULO ENCONTRADO NO BANCO!\n";
        echo "💡 Isso explica por que não aparecem no app.\n\n";
        
        // Verificar se a tabela existe
        $stmt = $pdo->query("SHOW TABLES LIKE 'veiculos'");
        if ($stmt->rowCount() == 0) {
            echo "❌ TABELA 'veiculos' NÃO EXISTE!\n";
            echo "💡 Execute o script de criação da tabela primeiro.\n\n";
        } else {
            echo "✅ Tabela 'veiculos' existe, mas está vazia.\n";
            echo "💡 Execute a sincronização ou cadastre veículos manualmente.\n\n";
        }
    } else {
        echo "✅ Encontrados " . count($veiculos) . " veículos:\n";
        foreach ($veiculos as $veiculo) {
            $status = $veiculo['status'] ?: 'NULL';
            echo "   • ID {$veiculo['id']}: {$veiculo['modelo']} ({$veiculo['placa']}) - Status: $status\n";
        }
        echo "\n";
    }
    
    // 2. CORRIGIR STATUS NULL
    echo "2️⃣ CORRIGINDO STATUS NULL:\n";
    $stmt = $pdo->prepare("UPDATE veiculos SET status = 'ativo' WHERE status IS NULL OR status = ''");
    $stmt->execute();
    $corrigidos = $stmt->rowCount();
    
    if ($corrigidos > 0) {
        echo "✅ $corrigidos veículo(s) com status NULL corrigido(s) para 'ativo'\n\n";
    } else {
        echo "✅ Nenhum veículo com status NULL encontrado\n\n";
    }
    
    // 3. VERIFICAR VIAGENS ATIVAS (veículos que deveriam estar "em_uso")
    echo "3️⃣ VERIFICANDO VIAGENS ATIVAS:\n";
    $stmt = $pdo->query("
        SELECT 
            v.id, v.modelo, v.placa, v.status,
            COUNT(vi.id) as viagens_ativas,
            GROUP_CONCAT(vi.id) as ids_viagens
        FROM veiculos v
        LEFT JOIN viagens vi ON v.id = vi.veiculo_id AND vi.data_fim IS NULL
        GROUP BY v.id
        HAVING viagens_ativas > 0
    ");
    $veiculosEmUso = $stmt->fetchAll();
    
    if (!empty($veiculosEmUso)) {
        echo "⚠️ Veículos que têm viagens ativas:\n";
        foreach ($veiculosEmUso as $veiculo) {
            echo "   • ID {$veiculo['id']}: {$veiculo['modelo']} ({$veiculo['placa']}) - Status atual: '{$veiculo['status']}' - {$veiculo['viagens_ativas']} viagem(ns) ativa(s)\n";
        }
        echo "\nℹ️ Nota: O status 'em_uso' é calculado dinamicamente no backend, não no banco.\n\n";
    } else {
        echo "✅ Nenhum veículo em uso no momento\n\n";
    }
    
    // 4. LIBERAR VEÍCULOS DE VIAGENS ÓRFÃS (opcional)
    echo "4️⃣ VERIFICANDO VIAGENS ÓRFÃS (sem finalização há mais de 24h):\n";
    $stmt = $pdo->query("
        SELECT 
            id, cliente, motivo, veiculo_id, data_inicio,
            TIMESTAMPDIFF(HOUR, data_inicio, NOW()) as horas_sem_finalizar
        FROM viagens 
        WHERE data_fim IS NULL 
        AND TIMESTAMPDIFF(HOUR, data_inicio, NOW()) > 24
    ");
    $viagensOrfas = $stmt->fetchAll();
    
    if (!empty($viagensOrfas)) {
        echo "⚠️ Viagens órfãs encontradas (abertas há mais de 24h):\n";
        foreach ($viagensOrfas as $viagem) {
            echo "   • Viagem ID {$viagem['id']}: {$viagem['cliente']} - Veículo {$viagem['veiculo_id']} - {$viagem['horas_sem_finalizar']}h sem finalizar\n";
        }
        echo "\n💡 Considere finalizar essas viagens manualmente.\n\n";
    } else {
        echo "✅ Nenhuma viagem órfã encontrada\n\n";
    }
    
    // 5. ESTATÍSTICAS FINAIS
    echo "5️⃣ ESTATÍSTICAS FINAIS:\n";
    $stmt = $pdo->query("
        SELECT 
            status,
            COUNT(*) as total
        FROM veiculos 
        GROUP BY status
        ORDER BY total DESC
    ");
    $stats = $stmt->fetchAll();
    
    echo "Status dos veículos:\n";
    foreach ($stats as $stat) {
        $status = $stat['status'] ?: 'NULL';
        echo "   • $status: {$stat['total']} veículo(s)\n";
    }
    
    // Total de viagens
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM viagens WHERE data_fim IS NULL");
    $viagensAtivas = $stmt->fetchColumn();
    
    $stmt = $pdo->query("SELECT COUNT(*) as total FROM viagens WHERE data_fim IS NOT NULL");
    $viagensFinalizadas = $stmt->fetchColumn();
    
    echo "\nViagens:\n";
    echo "   • Ativas: $viagensAtivas\n";
    echo "   • Finalizadas: $viagensFinalizadas\n";
    
    echo "\n✅ DIAGNÓSTICO CONCLUÍDO!\n";
    echo "\n💡 PRÓXIMOS PASSOS:\n";
    echo "   1. Execute sincronização no app\n";
    echo "   2. Verifique se os veículos aparecem na lista\n";
    echo "   3. Teste finalização de viagem\n";
    echo "   4. Confirme se veículo é liberado corretamente\n";
    
} catch (Exception $e) {
    echo "❌ ERRO: " . $e->getMessage() . "\n";
    echo "\n🔧 Verificações:\n";
    echo "   - Credenciais do banco estão corretas?\n";
    echo "   - Banco de dados existe?\n";
    echo "   - Tabela 'veiculos' existe?\n";
}
?> 
