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

echo "<h1>🔧 Correção Completa da API</h1>";
echo "<p>Este script corrige completamente a API para usar a tabela usuarios unificada.</p>";

try {
    $arquivoApi = '../api-simples-v2.php';
    
    if (!file_exists($arquivoApi)) {
        throw new Exception("Arquivo não encontrado: $arquivoApi");
    }
    
    echo "<h2>📋 Fazendo Backup</h2>";
    $backupFile = $arquivoApi . '.backup_' . date('Y-m-d_H-i-s');
    copy($arquivoApi, $backupFile);
    echo "<p>✅ Backup criado: " . basename($backupFile) . "</p>";
    
    echo "<h2>🔄 Aplicando Correções</h2>";
    
    $conteudo = file_get_contents($arquivoApi);
    $modificacoes = 0;
    
    // 1. Remover toda a seção de correção automática de motoristas
    echo "<h3>1. Removendo código de correção automática obsoleto</h3>";
    $padraoCorrecao = '/\/\/ CORREÇÃO AUTOMÁTICA:.*?foreach \(\$todosMotoristas as \$m\) \{.*?\}\s*\}/s';
    $conteudo = preg_replace($padraoCorrecao, '// Correção automática removida - usando tabela usuarios unificada', $conteudo);
    $modificacoes++;
    echo "<p>✅ Código de correção automática removido</p>";
    
    // 2. Substituir login de motoristas por login unificado
    echo "<h3>2. Atualizando sistema de login</h3>";
    $loginAntigo = '/\/\/ Buscar por usuário ou email na tabela motoristas.*?resposta\(false, null, \'Credenciais inválidas\. Verifique usuário\/matrícula\/CPF e senha\.\', 401\);/s';
    $loginNovo = '
                    // Buscar na tabela usuarios unificada
                    $stmt = $pdo->prepare("
                        SELECT id, nome, email, matricula, cpf, telefone, senha, ativo as status 
                        FROM usuarios 
                        WHERE (email = ? OR matricula = ? OR cpf = ? OR id = ?) AND ativo = 1
                    ");
                    $stmt->execute([$email, $email, $email, $email]);
                    $usuario = $stmt->fetch();
                    
                    error_log("Usuário encontrado: " . ($usuario ? "Sim - " . $usuario["nome"] : "Não"));
                    
                    if ($usuario && (password_verify($senha, $usuario["senha"]) || $usuario["senha"] === $senha)) {
                        error_log("✅ Login bem-sucedido para: " . $usuario["nome"]);
                        
                        $token = criarTokenSimples([
                            "id" => $usuario["id"],
                            "usuario" => $usuario["id"],
                            "tipo" => "usuario",
                            "exp" => time() + 3600
                        ]);
                        
                        resposta(true, [
                            "token" => $token,
                            "usuario" => [
                                "id" => $usuario["id"],
                                "nome" => $usuario["nome"],
                                "matricula" => $usuario["matricula"],
                                "usuario" => $usuario["id"],
                                "telefone" => $usuario["telefone"],
                                "tipo" => "usuario"
                            ]
                        ], "Login realizado com sucesso");
                    } else {
                        error_log("❌ Login falhou - credenciais inválidas para: " . $email);
                        resposta(false, null, "Credenciais inválidas", 401);
                    }';
    
    $conteudo = preg_replace($loginAntigo, $loginNovo, $conteudo);
    $modificacoes++;
    echo "<p>✅ Sistema de login atualizado</p>";
    
    // 3. Corrigir JOINs nas consultas de viagens
    echo "<h3>3. Corrigindo JOINs nas consultas</h3>";
    $joinAntigo = 'LEFT JOIN motoristas m ON v.tecnico_id = m.nome';
    $joinNovo = 'LEFT JOIN usuarios u ON v.tecnico_id = u.id';
    
    if (strpos($conteudo, $joinAntigo) !== false) {
        $conteudo = str_replace($joinAntigo, $joinNovo, $conteudo);
        $modificacoes++;
        echo "<p>✅ JOINs corrigidos</p>";
    }
    
    // 4. Corrigir campos nos SELECTs
    echo "<h3>4. Atualizando campos nos SELECTs</h3>";
    $substituicoes = [
        'm.nome' => 'u.nome',
        'm.matricula' => 'u.matricula',
        'COALESCE(m.nome, \'Técnico não identificado\')' => 'COALESCE(u.nome, \'Técnico não identificado\')',
        'COALESCE(m.matricula, \'N/A\')' => 'COALESCE(u.matricula, \'N/A\')',
        'tecnico_nome' => 'tecnico_nome',
        'tecnico_matricula' => 'tecnico_matricula'
    ];
    
    foreach ($substituicoes as $antigo => $novo) {
        if (strpos($conteudo, $antigo) !== false) {
            $conteudo = str_replace($antigo, $novo, $conteudo);
            echo "<p>✅ Campo atualizado: $antigo → $novo</p>";
            $modificacoes++;
        }
    }
    
    // 5. Remover debug excessivo
    echo "<h3>5. Limpando logs de debug</h3>";
    $debugPatterns = [
        '/error_log\("=========== DEBUG LOGIN MOTORISTA ==========="\);/',
        '/error_log\("Email\/usuário informado: \'\$email\'"\);/',
        '/error_log\("Senha informada: \'\$senha\'"\);/',
        '/error_log\("=========== FIM DEBUG LOGIN ==========="\);/',
    ];
    
    foreach ($debugPatterns as $pattern) {
        $conteudo = preg_replace($pattern, '// Debug removido', $conteudo);
    }
    echo "<p>✅ Logs de debug limpos</p>";
    
    // 6. Salvar arquivo corrigido
    echo "<h2>💾 Salvando Correções</h2>";
    file_put_contents($arquivoApi, $conteudo);
    echo "<p>✅ Arquivo salvo com $modificacoes modificações</p>";
    
    // 7. Verificar se as correções foram aplicadas
    echo "<h2>✅ Verificação Final</h2>";
    
    $conteudoFinal = file_get_contents($arquivoApi);
    
    $verificacoes = [
        'JOIN usuarios' => strpos($conteudoFinal, 'LEFT JOIN usuarios u ON v.tecnico_id = u.id') !== false,
        'SELECT usuarios' => strpos($conteudoFinal, 'u.nome') !== false,
        'Login simplificado' => strpos($conteudoFinal, 'FROM usuarios') !== false && strpos($conteudoFinal, 'WHERE (email = ? OR matricula = ? OR cpf = ? OR id = ?)') !== false,
        'Sem correção automática' => strpos($conteudoFinal, 'CORREÇÃO AUTOMÁTICA:') === false,
        'Sem debug excessivo' => strpos($conteudoFinal, 'DEBUG LOGIN MOTORISTA') === false
    ];
    
    echo "<table border='1' style='border-collapse: collapse; width: 100%; margin: 10px 0;'>";
    echo "<tr style='background: #f0f0f0;'><th>Verificação</th><th>Status</th></tr>";
    
    $todasOk = true;
    foreach ($verificacoes as $item => $status) {
        $statusText = $status ? '✅ OK' : '❌ Pendente';
        $cor = $status ? 'green' : 'red';
        echo "<tr>";
        echo "<td>$item</td>";
        echo "<td style='color: $cor;'>$statusText</td>";
        echo "</tr>";
        if (!$status) $todasOk = false;
    }
    echo "</table>";
    
    if ($todasOk) {
        echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; margin: 20px 0;'>";
        echo "<h3>🎉 API Completamente Corrigida!</h3>";
        echo "<p>✅ Todas as verificações passaram</p>";
        echo "<p>✅ Sistema unificado implementado</p>";
        echo "<p>✅ Código limpo e otimizado</p>";
        echo "</div>";
        
        echo "<h3>🧪 Teste Agora</h3>";
        echo "<ol>";
        echo "<li>Teste o login no aplicativo Android</li>";
        echo "<li>Verifique se as viagens mostram técnicos corretamente</li>";
        echo "<li>Execute a sincronização de dados</li>";
        echo "<li>Acesse o dashboard web</li>";
        echo "</ol>";
    } else {
        echo "<div style='background: #f8d7da; padding: 15px; border-radius: 5px; margin: 20px 0;'>";
        echo "<h3>⚠️ Algumas Correções Pendentes</h3>";
        echo "<p>Algumas verificações falharam. O arquivo foi salvo mas pode precisar de ajustes manuais.</p>";
        echo "</div>";
    }
    
} catch (Exception $e) {
    echo "<div style='color: red; background: #f8d7da; padding: 15px; border-radius: 5px;'>";
    echo "<h3>❌ Erro durante a correção:</h3>";
    echo "<p><strong>Erro:</strong> " . $e->getMessage() . "</p>";
    echo "<p><strong>Linha:</strong> " . $e->getLine() . "</p>";
    echo "</div>";
}

echo "<hr>";
echo "<p><a href='unificar-usuarios.html'>🔗 Unificar Usuários</a> | ";
echo "<a href='verificar-tecnicos.html'>🔗 Verificar Técnicos</a> | ";
echo "<a href='dashboard.html'>🔗 Dashboard</a></p>";
?> 
