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

echo "<h2>🔧 Resolvendo Colunas Duplicadas</h2>";

try {
    // Configurações do 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 "<p>✅ Conexão estabelecida!</p>";
    
    echo "<h3>🔍 Situação Atual:</h3>";
    echo "<p>⚠️ Temos colunas duplicadas que precisam ser resolvidas:</p>";
    echo "<ul>";
    echo "<li><strong>km_inicial</strong> (antiga) e <strong>odometro_inicial</strong> (nova)</li>";
    echo "<li><strong>km_final</strong> (antiga) e <strong>odometro_final</strong> (nova)</li>";
    echo "</ul>";
    
    // 1. Migrar dados das colunas antigas para as novas
    echo "<h3>1️⃣ Migrando dados das colunas antigas para as novas:</h3>";
    
    // Migrar km_inicial para odometro_inicial
    $sql = "
        UPDATE viagens 
        SET odometro_inicial = km_inicial 
        WHERE km_inicial IS NOT NULL 
        AND (odometro_inicial IS NULL OR odometro_inicial = 0)
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $migradosInicial = $stmt->rowCount();
    echo "<p>✅ <strong>{$migradosInicial}</strong> registros migrados de km_inicial para odometro_inicial</p>";
    
    // Migrar km_final para odometro_final
    $sql = "
        UPDATE viagens 
        SET odometro_final = km_final 
        WHERE km_final IS NOT NULL 
        AND (odometro_final IS NULL OR odometro_final = 0)
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $migradosFinal = $stmt->rowCount();
    echo "<p>✅ <strong>{$migradosFinal}</strong> registros migrados de km_final para odometro_final</p>";
    
    // 2. Verificar se a migração foi bem-sucedida
    echo "<h3>2️⃣ Verificando migração dos dados:</h3>";
    
    $stmt = $pdo->query("
        SELECT 
            COUNT(*) as total,
            COUNT(CASE WHEN odometro_inicial IS NOT NULL AND odometro_inicial > 0 THEN 1 END) as com_odometro_inicial,
            COUNT(CASE WHEN odometro_final IS NOT NULL AND odometro_final > 0 THEN 1 END) as com_odometro_final
        FROM viagens
    ");
    $estatisticas = $stmt->fetch();
    
    echo "<p>📊 Estatísticas da tabela viagens:</p>";
    echo "<ul>";
    echo "<li><strong>Total de registros:</strong> {$estatisticas['total']}</li>";
    echo "<li><strong>Com odômetro inicial:</strong> {$estatisticas['com_odometro_inicial']}</li>";
    echo "<li><strong>Com odômetro final:</strong> {$estatisticas['com_odometro_final']}</li>";
    echo "</ul>";
    
    // 3. Atualizar distancia_odometro com os novos dados
    echo "<h3>3️⃣ Atualizando distancia_odometro:</h3>";
    
    $sql = "
        UPDATE viagens 
        SET distancia_odometro = (odometro_final - odometro_inicial)
        WHERE odometro_final IS NOT NULL 
        AND odometro_inicial IS NOT NULL
        AND odometro_final > odometro_inicial
        AND (distancia_odometro IS NULL OR distancia_odometro = 0)
    ";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $distanciaAtualizada = $stmt->rowCount();
    
    echo "<p>✅ <strong>{$distanciaAtualizada}</strong> registros atualizados com distância dos odômetros!</p>";
    
    // 4. Verificar se podemos remover as colunas antigas
    echo "<h3>4️⃣ Verificando se podemos remover as colunas antigas:</h3>";
    
    // Verificar se todos os dados foram migrados
    $stmt = $pdo->query("
        SELECT 
            COUNT(*) as total,
            COUNT(CASE WHEN km_inicial IS NOT NULL AND km_inicial > 0 THEN 1 END) as com_km_inicial,
            COUNT(CASE WHEN km_final IS NOT NULL AND km_final > 0 THEN 1 END) as com_km_final
        FROM viagens
    ");
    $estatisticasAntigas = $stmt->fetch();
    
    echo "<p>📊 Colunas antigas ainda contêm dados:</p>";
    echo "<ul>";
    echo "<li><strong>km_inicial com dados:</strong> {$estatisticasAntigas['com_km_inicial']}</li>";
    echo "<li><strong>km_final com dados:</strong> {$estatisticasAntigas['com_km_final']}</li>";
    echo "</ul>";
    
    if ($estatisticasAntigas['com_km_inicial'] == 0 && $estatisticasAntigas['com_km_final'] == 0) {
        echo "<p>✅ Todas as colunas antigas estão vazias! Podemos removê-las com segurança.</p>";
        
        // Remover coluna km_inicial
        $sql = "ALTER TABLE viagens DROP COLUMN km_inicial";
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'km_inicial' removida!</p>";
        
        // Remover coluna km_final
        $sql = "ALTER TABLE viagens DROP COLUMN km_final";
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'km_final' removida!</p>";
        
    } else {
        echo "<p>⚠️ Ainda há dados nas colunas antigas. Vamos fazer uma migração final:</p>";
        
        // Migração final forçada
        $sql = "
            UPDATE viagens 
            SET odometro_inicial = COALESCE(odometro_inicial, km_inicial),
                odometro_final = COALESCE(odometro_final, km_final)
            WHERE (odometro_inicial IS NULL OR odometro_inicial = 0) 
            OR (odometro_final IS NULL OR odometro_final = 0)
        ";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $migradosFinais = $stmt->rowCount();
        echo "<p>✅ <strong>{$migradosFinais}</strong> registros migrados na migração final!</p>";
        
        // Agora tentar remover novamente
        $sql = "ALTER TABLE viagens DROP COLUMN km_inicial";
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'km_inicial' removida!</p>";
        
        $sql = "ALTER TABLE viagens DROP COLUMN km_final";
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'km_final' removida!</p>";
    }
    
    // 5. Verificar estrutura final
    echo "<h3>5️⃣ Estrutura Final da Tabela viagens:</h3>";
    
    $stmt = $pdo->query("SHOW COLUMNS FROM viagens");
    $colunasFinais = $stmt->fetchAll();
    
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
    echo "<tr><th>Campo</th><th>Tipo</th><th>Nulo</th><th>Chave</th><th>Padrão</th><th>Extra</th></tr>";
    foreach ($colunasFinais as $coluna) {
        echo "<tr>";
        echo "<td>{$coluna['Field']}</td>";
        echo "<td>{$coluna['Type']}</td>";
        echo "<td>{$coluna['Null']}</td>";
        echo "<td>{$coluna['Key']}</td>";
        echo "<td>{$coluna['Default']}</td>";
        echo "<td>{$coluna['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    // 6. Exemplo dos dados finais
    echo "<h3>6️⃣ Exemplo dos Dados Finais:</h3>";
    
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.cliente,
            v.odometro_inicial,
            v.odometro_final,
            v.distancia_odometro,
            v.distancia_gps
        FROM viagens v 
        WHERE v.distancia_odometro IS NOT NULL
        ORDER BY v.id DESC
        LIMIT 5
    ");
    
    $exemplos = $stmt->fetchAll();
    
    if ($exemplos) {
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>ID</th><th>Cliente</th><th>Odômetro Inicial</th><th>Odômetro Final</th><th>Distância Odômetro</th><th>Distância GPS</th></tr>";
        foreach ($exemplos as $exemplo) {
            echo "<tr>";
            echo "<td>{$exemplo['id']}</td>";
            echo "<td>{$exemplo['cliente']}</td>";
            echo "<td>{$exemplo['odometro_inicial']}</td>";
            echo "<td>{$exemplo['odometro_final']}</td>";
            echo "<td><strong>{$exemplo['distancia_odometro']} km</strong></td>";
            echo "<td>{$exemplo['distancia_gps']} km</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    echo "<h3>🎯 Resumo da Operação:</h3>";
    echo "<ul>";
    echo "<li>✅ Dados migrados das colunas antigas para as novas</li>";
    echo "<li>✅ Colunas antigas removidas com segurança</li>";
    echo "<li>✅ Estrutura da tabela limpa e organizada</li>";
    echo "<li>✅ Dados de distância calculados corretamente</li>";
    echo "</ul>";
    
    echo "<h3>🚀 Próximo Passo:</h3>";
    echo "<p>Agora podemos atualizar as APIs para usar os novos nomes de colunas!</p>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}
?>
