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

echo "<h2>🔄 Atualizando Aplicativo Android com Novos Nomes de Colunas</h2>";

try {
    // Obter o diretório atual
    $diretorioAtual = getcwd();
    echo "<p>🔍 Diretório atual: $diretorioAtual</p>";
    
    // Tentar diferentes caminhos possíveis para o diretório app
    $caminhosPossiveis = [
        '../app',                    // Um nível acima
        '../../app',                 // Dois níveis acima
        dirname($diretorioAtual) . '/app',  // Um nível acima do atual
        dirname(dirname($diretorioAtual)) . '/app',  // Dois níveis acima
        'app',                       // No diretório atual
        '/app',                      // Raiz absoluta
        './app'                      // Relativo ao atual
    ];
    
    echo "<h3>🔍 Procurando diretório 'app':</h3>";
    $diretorioAndroid = null;
    
    foreach ($caminhosPossiveis as $caminho) {
        echo "<p>🔍 Tentando: $caminho</p>";
        if (is_dir($caminho)) {
            $diretorioAndroid = $caminho;
            echo "<p>✅ <strong>Diretório encontrado em: $caminho</strong></p>";
            break;
        } else {
            echo "<p>❌ Não encontrado: $caminho</p>";
        }
    }
    
    if (!$diretorioAndroid) {
        // Se não encontrar, tentar procurar recursivamente
        echo "<h3>🔍 Procurando recursivamente pelo diretório 'app':</h3>";
        $diretorioAndroid = encontrarDiretorioApp($diretorioAtual);
        
        if (!$diretorioAndroid) {
            // Última tentativa: procurar em diretórios específicos
            $diretorioAndroid = encontrarDiretorioAppEspecifico($diretorioAtual);
            
            if (!$diretorioAndroid) {
                throw new Exception("Diretório 'app' não encontrado! Verifique se o projeto está na estrutura correta.");
            }
        }
    }
    
    echo "<p>✅ <strong>Diretório final encontrado: $diretorioAndroid</strong></p>";
    
    // Verificar se o diretório tem a estrutura esperada
    if (!is_dir($diretorioAndroid . '/src')) {
        throw new Exception("Diretório 'app' encontrado mas não parece ser um projeto Android válido (falta pasta 'src')");
    }
    
    // Lista de arquivos Kotlin que precisam ser atualizados
    $arquivosKotlin = [
        'src/main/java/com/example/controledefrotas/data/service/ViagemSyncService.kt',
        'src/main/java/com/example/controledefrotas/data/service/SolicitacaoViagemService.kt',
        'src/main/java/com/example/controledefrotas/presentation/rota/RotaEmAndamentoViewModel.kt',
        'src/main/java/com/example/controledefrotas/presentation/rota/RotaEmAndamentoScreen.kt',
        'src/main/java/com/example/controledefrotas/presentation/navigation/AppNavigation.kt',
        'src/main/java/com/example/controledefrotas/presentation/checklist/ChecklistVeiculoScreen.kt'
    ];
    
    $totalArquivos = 0;
    $arquivosAtualizados = 0;
    
    echo "<h3>🔍 Atualizando arquivos Kotlin:</h3>";
    
    foreach ($arquivosKotlin as $arquivo) {
        $caminhoCompleto = $diretorioAndroid . '/' . $arquivo;
        
        if (file_exists($caminhoCompleto)) {
            $totalArquivos++;
            echo "<h4>📁 Processando: $arquivo</h4>";
            
            // Ler o conteúdo atual
            $conteudo = file_get_contents($caminhoCompleto);
            $conteudoOriginal = $conteudo;
            
            // 1. Substituir km_inicial por odometro_inicial
            $conteudo = str_replace('km_inicial', 'odometro_inicial', $conteudo);
            $conteudo = str_replace('kmInicial', 'odometroInicial', $conteudo);
            echo "<p>✅ 'km_inicial' → 'odometro_inicial'</p>";
            
            // 2. Substituir km_final por odometro_final
            $conteudo = str_replace('km_final', 'odometro_final', $conteudo);
            $conteudo = str_replace('kmFinal', 'odometroFinal', $conteudo);
            echo "<p>✅ 'km_final' → 'odometro_final'</p>";
            
            // 3. Substituir km_gps_final por distancia_gps
            $conteudo = str_replace('km_gps_final', 'distancia_gps', $conteudo);
            $conteudo = str_replace('kmGpsFinal', 'distanciaGps', $conteudo);
            echo "<p>✅ 'km_gps_final' → 'distancia_gps'</p>";
            
            // 4. Substituir km_real por distancia_odometro_rota
            $conteudo = str_replace('km_real', 'distancia_odometro_rota', $conteudo);
            $conteudo = str_replace('kmReal', 'distanciaOdometroRota', $conteudo);
            echo "<p>✅ 'km_real' → 'distancia_odometro_rota'</p>";
            
            // 5. Atualizar comentários específicos
            $conteudo = str_replace('// ✅ CORREÇÃO: Usar km_gps_final da viagem em vez de calcular pontos duplicados', '// ✅ CORREÇÃO: Usar distancia_gps da viagem em vez de calcular pontos duplicados', $conteudo);
            $conteudo = str_replace('// Usar km_gps_final se disponível, senão calcular do trajeto', '// Usar distancia_gps se disponível, senão calcular do trajeto', $conteudo);
            echo "<p>✅ Comentários atualizados</p>";
            
            // 6. Atualizar rotas de navegação
            $conteudo = str_replace('km_inicial_rota', 'odometro_inicial_rota', $conteudo);
            echo "<p>✅ Rotas de navegação atualizadas</p>";
            
            // Verificar se houve mudanças
            if ($conteudo !== $conteudoOriginal) {
                // Fazer backup do arquivo original
                $backupFile = $caminhoCompleto . '.backup.' . date('Y-m-d-H-i-s');
                if (copy($caminhoCompleto, $backupFile)) {
                    echo "<p>✅ Backup criado: " . basename($backupFile) . "</p>";
                }
                
                // Salvar o arquivo atualizado
                if (file_put_contents($caminhoCompleto, $conteudo)) {
                    echo "<p>✅ Arquivo atualizado com sucesso!</p>";
                    $arquivosAtualizados++;
                } else {
                    echo "<p>⚠️ Erro ao salvar o arquivo</p>";
                }
            } else {
                echo "<p>⚠️ Nenhuma mudança foi feita neste arquivo</p>";
            }
            
            echo "<hr>";
        } else {
            echo "<p>⚠️ Arquivo não encontrado: $caminhoCompleto</p>";
        }
    }
    
    // Verificar se ainda há referências às colunas antigas
    echo "<h3>🔍 Verificando se ainda há referências às colunas antigas:</h3>";
    
    $referenciasAntigas = [
        'km_inicial' => 0,
        'km_final' => 0,
        'km_gps_final' => 0,
        'km_real' => 0
    ];
    
    // Contar referências em todos os arquivos Kotlin
    foreach ($arquivosKotlin as $arquivo) {
        $caminhoCompleto = $diretorioAndroid . '/' . $arquivo;
        if (file_exists($caminhoCompleto)) {
            $conteudo = file_get_contents($caminhoCompleto);
            foreach ($referenciasAntigas as $coluna => &$quantidade) {
                $quantidade += substr_count($conteudo, $coluna);
            }
        }
    }
    
    foreach ($referenciasAntigas as $coluna => $quantidade) {
        if ($quantidade > 0) {
            echo "<p>⚠️ Ainda há <strong>$quantidade</strong> referências a '$coluna'</p>";
        } else {
            echo "<p>✅ Nenhuma referência a '$coluna' encontrada</p>";
        }
    }
    
    // Mostrar resumo das mudanças
    echo "<h3>📋 Resumo das mudanças realizadas:</h3>";
    echo "<ul>";
    echo "<li><strong>Total de arquivos processados:</strong> $totalArquivos</li>";
    echo "<li><strong>Arquivos atualizados:</strong> $arquivosAtualizados</li>";
    echo "<li><strong>Backups criados:</strong> $arquivosAtualizados</li>";
    echo "</ul>";
    
    echo "<h3>🔄 Mapeamento das colunas atualizadas:</h3>";
    echo "<ul>";
    echo "<li><strong>km_inicial</strong> → <strong>odometro_inicial</strong></li>";
    echo "<li><strong>km_final</strong> → <strong>odometro_final</strong></li>";
    echo "<li><strong>km_gps_final</strong> → <strong>distancia_gps</strong></li>";
    echo "<li><strong>km_real</strong> → <strong>distancia_odometro_rota</strong></li>";
    echo "<li><strong>kmInicial</strong> → <strong>odometroInicial</strong></li>";
    echo "<li><strong>kmFinal</strong> → <strong>odometroFinal</strong></li>";
    echo "<li><strong>kmGpsFinal</strong> → <strong>distanciaGps</strong></li>";
    echo "<li><strong>kmReal</strong> → <strong>distanciaOdometroRota</strong></li>";
    echo "</ul>";
    
    echo "<h3>🎯 Próximos Passos:</h3>";
    echo "<ol>";
    echo "<li>✅ Aplicativo Android atualizado com novos nomes de colunas</li>";
    echo "<li>🧪 Compilar o aplicativo Android para verificar erros</li>";
    echo "<li>🧪 Testar funcionalidades do aplicativo</li>";
    echo "<li>🧪 Testar sincronização com a API</li>";
    echo "</ol>";
    
    echo "<h3>🎉 Sistema Completo Atualizado!</h3>";
    echo "<p>Parabéns! Agora todo o sistema está usando os novos nomes de colunas:</p>";
    echo "<ul>";
    echo "<li>✅ <strong>Banco de dados</strong> - Colunas renomeadas</li>";
    echo "<li>✅ <strong>API</strong> - Atualizada com novos nomes</li>";
    echo "<li>✅ <strong>Dashboard</strong> - Atualizado com novos nomes</li>";
    echo "<li>✅ <strong>Aplicativo Android</strong> - Atualizado com novos nomes</li>";
    echo "</ul>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}

// Função para encontrar o diretório app recursivamente
function encontrarDiretorioApp($diretorio) {
    if (is_dir($diretorio . '/app')) {
        return $diretorio . '/app';
    }
    
    $itens = scandir($diretorio);
    foreach ($itens as $item) {
        if ($item != '.' && $item != '..' && is_dir($diretorio . '/' . $item)) {
            $resultado = encontrarDiretorioApp($diretorio . '/' . $item);
            if ($resultado) {
                return $resultado;
            }
        }
    }
    
    return null;
}

// Função para encontrar o diretório app em locais específicos
function encontrarDiretorioAppEspecifico($diretorioAtual) {
    // Tentar caminhos específicos baseados no diretório atual
    $caminhosEspecificos = [
        dirname($diretorioAtual) . '/app',  // Um nível acima
        dirname(dirname($diretorioAtual)) . '/app',  // Dois níveis acima
        '/home/pinheir3/sistemas.pinheiroempresas.com.br/controlefrotaV1.1/app',  // Caminho absoluto
        '/var/www/html/controlefrotaV1.1/app',  // Possível caminho alternativo
        '/home/pinheir3/public_html/controlefrotaV1.1/app'  // Outro possível caminho
    ];
    
    foreach ($caminhosEspecificos as $caminho) {
        if (is_dir($caminho)) {
            return $caminho;
        }
    }
    
    return null;
}
?>
