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

echo "<h2>🔧 Adicionando Coluna Odômetro Final na Tabela Rotas</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>";
    
    // 1. Adicionar coluna odometro_final na tabela solicitacoes_rotas
    echo "<h3>1️⃣ Adicionando Coluna odometro_final:</h3>";
    
    $stmt = $pdo->query("SHOW COLUMNS FROM solicitacoes_rotas LIKE 'odometro_final'");
    $colunaExiste = $stmt->rowCount() > 0;
    
    if ($colunaExiste) {
        echo "<p>✅ Coluna 'odometro_final' já existe na tabela solicitacoes_rotas!</p>";
    } else {
        $sql = "ALTER TABLE solicitacoes_rotas ADD COLUMN odometro_final INT DEFAULT NULL AFTER km_real";
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'odometro_final' adicionada com sucesso!</p>";
    }
    
    // 2. Atualizar dados existentes
    echo "<h3>2️⃣ Atualizando Dados Existentes:</h3>";
    
    $sqlUpdate = "
        UPDATE solicitacoes_rotas sr 
        SET odometro_final = (
            SELECT MAX(v.km_final)
            FROM rota_viagens rv 
            JOIN viagens v ON rv.viagem_id = v.id 
            WHERE rv.solicitacao_rota_id = sr.id 
            AND v.km_final IS NOT NULL 
            AND v.km_final > 0
        )
        WHERE sr.status = 'concluida'
        AND EXISTS (
            SELECT 1 FROM rota_viagens rv 
            JOIN viagens v ON rv.viagem_id = v.id 
            WHERE rv.solicitacao_rota_id = sr.id
        )
    ";
    
    $stmt = $pdo->prepare($sqlUpdate);
    $stmt->execute();
    $registrosAtualizados = $stmt->rowCount();
    
    echo "<p>✅ <strong>{$registrosAtualizados}</strong> rotas atualizadas com odômetro final!</p>";
    
    // 3. Verificar resultado
    echo "<h3>3️⃣ Verificando Resultado:</h3>";
    
    $stmt = $pdo->query("
        SELECT 
            sr.id,
            sr.titulo,
            (SELECT MIN(v.km_inicial) FROM rota_viagens rv JOIN viagens v ON rv.viagem_id = v.id WHERE rv.solicitacao_rota_id = sr.id) as odometro_inicial,
            sr.odometro_final,
            (sr.odometro_final - (SELECT MIN(v.km_inicial) FROM rota_viagens rv JOIN viagens v ON rv.viagem_id = v.id WHERE rv.solicitacao_rota_id = sr.id)) as distancia_percorrida
        FROM solicitacoes_rotas sr 
        WHERE sr.status = 'concluida' 
        AND sr.odometro_final IS NOT NULL
        LIMIT 3
    ");
    
    $exemplos = $stmt->fetchAll();
    
    if ($exemplos) {
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>ID</th><th>Título</th><th>Odômetro Inicial</th><th>Odômetro Final</th><th>Distância Percorrida</th></tr>";
        foreach ($exemplos as $exemplo) {
            echo "<tr>";
            echo "<td>{$exemplo['id']}</td>";
            echo "<td>{$exemplo['titulo']}</td>";
            echo "<td>{$exemplo['odometro_inicial']}</td>";
            echo "<td>{$exemplo['odometro_final']}</td>";
            echo "<td><strong>{$exemplo['distancia_percorrida']} km</strong></td>";
            echo "</tr>";
        }
        echo "</table>";
        
        echo "<p><strong>📊 Resumo:</strong></p>";
        echo "<ul>";
        echo "<li><strong>Odômetro Inicial:</strong> Valor absoluto do contador no início da rota</li>";
        echo "<li><strong>Odômetro Final:</strong> Valor absoluto do contador no final da rota</li>";
        echo "<li><strong>Distância Percorrida:</strong> Diferença entre final e inicial (km percorridos)</li>";
        echo "</ul>";
    }
    
    echo "<h3>🎯 Próximos Passos:</h3>";
    echo "<ol>";
    echo "<li>✅ Coluna odometro_final criada na tabela solicitacoes_rotas</li>";
    echo "<li>✅ Dados existentes atualizados</li>";
    echo "<li>🔧 Atualizar API rotas-recentes para usar odometro_final</li>";
    echo "<li>🔧 Atualizar dashboard para mostrar odômetro separado do GPS</li>";
    echo "</ol>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}
?>
