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

echo "<h1>🔧 Adicionar Colunas GPS Faltantes</h1>";

try {
    $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 "<h2>1️⃣ Estrutura Atual da Tabela viagens</h2>";
    
    // Verificar estrutura atual
    $stmt = $pdo->query("DESCRIBE viagens");
    $colunas = $stmt->fetchAll();
    
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
    echo "<tr style='background: #e8f5e8;'>";
    echo "<th>Campo</th><th>Tipo</th><th>NULL</th><th>Chave</th><th>Padrão</th><th>Extra</th>";
    echo "</tr>";
    
    foreach ($colunas as $col) {
        echo "<tr>";
        echo "<td><strong>{$col['Field']}</strong></td>";
        echo "<td>{$col['Type']}</td>";
        echo "<td>{$col['Null']}</td>";
        echo "<td>{$col['Key']}</td>";
        echo "<td>{$col['Default']}</td>";
        echo "<td>{$col['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>2️⃣ Adicionando Colunas GPS Faltantes</h2>";
    
    // Verificar se km_gps_inicial existe
    $temKmGpsInicial = false;
    $temKmGpsTotal = false;
    
    foreach ($colunas as $col) {
        if ($col['Field'] === 'km_gps_inicial') $temKmGpsInicial = true;
        if ($col['Field'] === 'km_gps_total') $temKmGpsTotal = true;
    }
    
    // Adicionar km_gps_inicial se não existir
    if (!$temKmGpsInicial) {
        echo "<p><strong>Adicionando coluna km_gps_inicial...</strong></p>";
        
        try {
            $pdo->exec("ALTER TABLE viagens ADD COLUMN km_gps_inicial DECIMAL(10,2) DEFAULT NULL COMMENT 'KM GPS inicial da viagem'");
            echo "<p style='color: green;'>✅ Coluna km_gps_inicial adicionada com sucesso!</p>";
            $temKmGpsInicial = true;
        } catch (Exception $e) {
            echo "<p style='color: red;'>❌ Erro ao adicionar km_gps_inicial: " . $e->getMessage() . "</p>";
        }
    } else {
        echo "<p style='color: green;'>✅ Coluna km_gps_inicial já existe!</p>";
    }
    
    // Adicionar km_gps_total se não existir
    if (!$temKmGpsTotal) {
        echo "<p><strong>Adicionando coluna km_gps_total...</strong></p>";
        
        try {
            $pdo->exec("ALTER TABLE viagens ADD COLUMN km_gps_total DECIMAL(10,2) DEFAULT NULL COMMENT 'KM GPS total percorrido na viagem'");
            echo "<p style='color: green;'>✅ Coluna km_gps_total adicionada com sucesso!</p>";
            $temKmGpsTotal = true;
        } catch (Exception $e) {
            echo "<p style='color: red;'>❌ Erro ao adicionar km_gps_total: " . $e->getMessage() . "</p>";
        }
    } else {
        echo "<p style='color: green;'>✅ Coluna km_gps_total já existe!</p>";
    }
    
    echo "<h2>3️⃣ Atualizando Dados das Viagens Existentes</h2>";
    
    if ($temKmGpsInicial && $temKmGpsTotal) {
        echo "<p><strong>Atualizando viagens da rota #1...</strong></p>";
        
        // Buscar viagens da rota #1
        $stmt = $pdo->prepare("SELECT id, km_inicial, km_final, km_gps_final FROM viagens WHERE solicitacao_rota_id = 1 ORDER BY id");
        $stmt->execute();
        $viagens = $stmt->fetchAll();
        
        foreach ($viagens as $viagem) {
            $kmGpsInicial = $viagem['km_inicial'] * 1000; // Converter para metros
            $kmGpsTotal = $viagem['km_gps_final'] > 0 ? $viagem['km_gps_final'] : 0;
            
            try {
                $stmtUpdate = $pdo->prepare("
                    UPDATE viagens 
                    SET km_gps_inicial = ?, km_gps_total = ? 
                    WHERE id = ?
                ");
                $stmtUpdate->execute([$kmGpsInicial, $kmGpsTotal, $viagem['id']]);
                
                echo "<p style='color: green;'>✅ Viagem #{$viagem['id']} atualizada:</p>";
                echo "<ul>";
                echo "<li>KM GPS Inicial: {$kmGpsInicial} metros</li>";
                echo "<li>KM GPS Total: {$kmGpsTotal} metros</li>";
                echo "</ul>";
                
            } catch (Exception $e) {
                echo "<p style='color: red;'>❌ Erro ao atualizar viagem #{$viagem['id']}: " . $e->getMessage() . "</p>";
            }
        }
    }
    
    echo "<h2>4️⃣ Nova Estrutura da Tabela</h2>";
    
    // Verificar estrutura final
    $stmt = $pdo->query("DESCRIBE viagens");
    $colunasFinais = $stmt->fetchAll();
    
    echo "<table border='1' style='border-collapse: collapse; margin: 10px 0; width: 100%;'>";
    echo "<tr style='background: #e8f5e8;'>";
    echo "<th>Campo</th><th>Tipo</th><th>NULL</th><th>Chave</th><th>Padrão</th><th>Extra</th>";
    echo "</tr>";
    
    foreach ($colunasFinais as $col) {
        $cor = '';
        if (in_array($col['Field'], ['km_gps_inicial', 'km_gps_total'])) {
            $cor = 'style="background: #d4edda;"';
        }
        
        echo "<tr {$cor}>";
        echo "<td><strong>{$col['Field']}</strong></td>";
        echo "<td>{$col['Type']}</td>";
        echo "<td>{$col['Null']}</td>";
        echo "<td>{$col['Key']}</td>";
        echo "<td>{$col['Default']}</td>";
        echo "<td>{$col['Extra']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<h2>5️⃣ Resumo da Correção</h2>";
    
    echo "<div style='background: #d4edda; padding: 15px; border-radius: 5px; border: 1px solid #c3e6cb;'>";
    echo "<h3>✅ ESTRUTURA COMPLETA AGORA:</h3>";
    echo "<ul>";
    echo "<li><strong>km_inicial:</strong> Odômetro inicial (KM)</li>";
    echo "<li><strong>km_final:</strong> Odômetro final (KM)</li>";
    echo "<li><strong>km_gps_inicial:</strong> GPS inicial (metros)</li>";
    echo "<li><strong>km_gps_final:</strong> GPS final (metros)</li>";
    echo "<li><strong>km_gps_total:</strong> GPS total percorrido (metros)</li>";
    echo "</ul>";
    echo "<p><strong>AGORA PODEMOS CALCULAR CORRETAMENTE:</strong></p>";
    echo "<ul>";
    echo "<li><strong>Distância percorrida:</strong> km_gps_final - km_gps_inicial</li>";
    echo "<li><strong>Total da rota:</strong> Soma das distâncias percorridas</li>";
    echo "</ul>";
    echo "</div>";
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro de banco: " . $e->getMessage() . "</p>";
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro geral: " . $e->getMessage() . "</p>";
}
?>
