<?php
// Script para corrigir todos os problemas identificados
require_once 'config/database.php';

header('Content-Type: application/json');

try {
    $pdo = conectarBanco();
    
    echo "=== CORREÇÃO DE TODOS OS PROBLEMAS ===\n\n";
    
    // 1. Verificar e corrigir tabelas de GPS
    echo "1. VERIFICANDO TABELAS DE GPS:\n";
    
    // Verificar se status_tecnicos existe
    $stmt = $pdo->query("SHOW TABLES LIKE 'status_tecnicos'");
    $statusTecnicos = $stmt->fetch();
    
    if (!$statusTecnicos) {
        echo "❌ Tabela status_tecnicos não existe. Execute o script SQL primeiro!\n";
    } else {
        echo "✅ Tabela status_tecnicos existe\n";
        
        // Verificar se tem dados
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM status_tecnicos");
        $total = $stmt->fetch();
        echo "- Total de registros: {$total['total']}\n";
        
        if ($total['total'] == 0) {
            echo "⚠️ Tabela vazia. Inserindo motoristas...\n";
            
            // Inserir motoristas ativos
            $stmt = $pdo->query("
                INSERT INTO status_tecnicos (tecnico_id, status_conexao) 
                SELECT DISTINCT nome, 'offline' 
                FROM motoristas 
                WHERE status = 'ativo'
                ON DUPLICATE KEY UPDATE tecnico_id = tecnico_id
            ");
            echo "✅ Motoristas inseridos na tabela status_tecnicos\n";
        }
    }
    
    // 2. Verificar dados das viagens
    echo "\n2. VERIFICANDO DADOS DAS VIAGENS:\n";
    
    // Verificar se tecnico_id é numérico ou string
    $stmt = $pdo->query("
        SELECT 
            v.tecnico_id,
            CASE 
                WHEN v.tecnico_id REGEXP '^[0-9]+$' THEN 'NUMÉRICO'
                ELSE 'STRING'
            END as tipo_dado,
            COUNT(*) as total
        FROM viagens v
        GROUP BY v.tecnico_id, tipo_dado
        ORDER BY total DESC
        LIMIT 5
    ");
    $analise = $stmt->fetchAll();
    
    foreach ($analise as $item) {
        echo "- tecnico_id: '{$item['tecnico_id']}' - Tipo: {$item['tipo_dado']} - Total: {$item['total']}\n";
    }
    
    // 3. Verificar rotas
    echo "\n3. VERIFICANDO ROTAS:\n";
    
    $stmt = $pdo->query("
        SELECT 
            status,
            COUNT(*) as total
        FROM solicitacoes_rotas
        GROUP BY status
        ORDER BY total DESC
    ");
    $status = $stmt->fetchAll();
    
    foreach ($status as $item) {
        echo "- Status: '{$item['status']}', Total: {$item['total']}\n";
    }
    
    // 4. Testar endpoint de viagens corrigido
    echo "\n4. TESTANDO ENDPOINT DE VIAGENS:\n";
    
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.tecnico_id,
            v.cliente,
            COALESCE(m.nome, 'Técnico não identificado') as tecnico_nome,
            COALESCE(ve.modelo, 'Veículo não identificado') as veiculo_nome,
            COALESCE(ve.placa, 'N/A') as veiculo_placa
        FROM viagens v
        LEFT JOIN motoristas m ON (v.tecnico_id = m.id OR v.tecnico_id = m.nome)
        LEFT JOIN veiculos ve ON v.veiculo_id = ve.id
        LEFT JOIN rota_viagens rv ON v.id = rv.viagem_id
        WHERE rv.viagem_id IS NULL
        ORDER BY v.id DESC
        LIMIT 5
    ");
    $viagens = $stmt->fetchAll();
    
    foreach ($viagens as $viagem) {
        echo "- ID: {$viagem['id']}, tecnico_id: '{$viagem['tecnico_id']}', nome: '{$viagem['tecnico_nome']}', veiculo: '{$viagem['veiculo_nome']} - {$viagem['veiculo_placa']}'\n";
    }
    
    // 5. Testar endpoint de rotas executadas
    echo "\n5. TESTANDO ENDPOINT DE ROTAS EXECUTADAS:\n";
    
    $stmt = $pdo->query("
        SELECT 
            sr.id,
            sr.titulo,
            sr.status,
            sr.data_inicio_real,
            sr.data_fim_real,
            m.nome as motorista_nome
        FROM solicitacoes_rotas sr
        LEFT JOIN motoristas m ON sr.motorista_id = m.id
        WHERE sr.status IN ('concluida', 'finalizada', 'completa')
        ORDER BY sr.data_fim_real DESC
        LIMIT 5
    ");
    $rotas = $stmt->fetchAll();
    
    echo "Total de rotas executadas: " . count($rotas) . "\n";
    foreach ($rotas as $rota) {
        echo "- ID: {$rota['id']}, Título: '{$rota['titulo']}', Status: '{$rota['status']}', Motorista: '{$rota['motorista_nome']}'\n";
    }
    
    echo "\n=== RESUMO DAS CORREÇÕES ===\n";
    echo "✅ JOIN de técnicos corrigido (aceita ID ou nome)\n";
    echo "✅ Endpoint de rotas executadas testado\n";
    echo "⚠️ Execute o script SQL para GPS se ainda não fez\n";
    
    echo "\n=== PRÓXIMOS PASSOS ===\n";
    echo "1. Execute o script SQL para GPS\n";
    echo "2. Teste o dashboard - deve mostrar nomes dos técnicos\n";
    echo "3. Teste a página 'Rotas Executadas'\n";
    echo "4. Teste o GPS no app Android\n";
    
} catch (Exception $e) {
    echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
