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

// Configurações do banco
$host = 'localhost';
$dbname = 'pinheir3_controle_frotasV1.1';
$username = 'pinheir3_admin';
$password = '080880Gelboy';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", username: $username, password: $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    
    echo "<h2>🔧 Adicionando Coluna Odômetro Final</h2>";
    
    // 1. Adicionar coluna na tabela solicitacoes_rotas
    echo "<h3>1️⃣ Tabela solicitacoes_rotas:</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 {
        // Adicionar coluna odometro_final
        $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 na tabela solicitacoes_rotas!</p>";
    }
    
    // 2. Adicionar coluna na tabela viagens
    echo "<h3>2️⃣ Tabela viagens:</h3>";
    $stmt = $pdo->query("SHOW COLUMNS FROM viagens LIKE 'odometro_final'");
    $colunaExisteViagens = $stmt->rowCount() > 0;
    
    if ($colunaExisteViagens) {
        echo "<p>✅ Coluna 'odometro_final' já existe na tabela viagens!</p>";
    } else {
        // Adicionar coluna odometro_final
        $sql = "ALTER TABLE viagens ADD COLUMN odometro_final INT DEFAULT NULL AFTER km_final";
        
        $pdo->exec($sql);
        echo "<p>✅ Coluna 'odometro_final' adicionada com sucesso na tabela viagens!</p>";
    }
    
    // Verificar estrutura atual da tabela
    echo "<h3>📋 Estrutura Atual da Tabela solicitacoes_rotas:</h3>";
    $stmt = $pdo->query("DESCRIBE solicitacoes_rotas");
    $colunas = $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></tr>";
    foreach ($colunas as $coluna) {
        $style = ($coluna['Field'] === 'odometro_final') ? 'background-color: #90EE90;' : '';
        echo "<tr style='$style'>";
        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 "</tr>";
    }
    echo "</table>";
    
    // Atualizar dados existentes com o odômetro final calculado
    echo "<h3>🔄 Atualizando Dados Existentes:</h3>";
    
    // 1. Atualizar tabela solicitacoes_rotas
    echo "<h4>📊 Tabela solicitacoes_rotas:</h4>";
    $sqlUpdateRotas = "
        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($sqlUpdateRotas);
    $stmt->execute();
    $registrosAtualizadosRotas = $stmt->rowCount();
    
    echo "<p>✅ <strong>{$registrosAtualizadosRotas}</strong> rotas atualizadas com odômetro final!</p>";
    
    // 2. Atualizar tabela viagens
    echo "<h4>📊 Tabela viagens:</h4>";
    $sqlUpdateViagens = "
        UPDATE viagens v 
        SET odometro_final = v.km_final
        WHERE v.km_final IS NOT NULL 
        AND v.km_final > 0
        AND v.odometro_final IS NULL
    ";
    
    $stmt = $pdo->prepare($sqlUpdateViagens);
    $stmt->execute();
    $registrosAtualizadosViagens = $stmt->rowCount();
    
    echo "<p>✅ <strong>{$registrosAtualizadosViagens}</strong> viagens atualizadas com odômetro final!</p>";
    
    // Mostrar exemplo dos dados
    echo "<h3>📊 Exemplo dos Dados Atualizados:</h3>";
    
    // 1. Exemplo da tabela solicitacoes_rotas
    echo "<h4>🗺️ Tabela solicitacoes_rotas:</h4>";
    $stmt = $pdo->query("
        SELECT 
            sr.id,
            sr.titulo,
            sr.km_real,
            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 odometro_inicial_calculado,
            (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) as odometro_final_calculado
        FROM solicitacoes_rotas sr 
        WHERE sr.status = 'concluida' 
        AND sr.odometro_final IS NOT NULL
        LIMIT 3
    ");
    
    $exemplosRotas = $stmt->fetchAll();
    
    if ($exemplosRotas) {
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>ID</th><th>Título</th><th>KM Real</th><th>Odômetro Final</th><th>Odômetro Inicial (Calc)</th><th>Odômetro Final (Calc)</th></tr>";
        foreach ($exemplosRotas as $exemplo) {
            echo "<tr>";
            echo "<td>{$exemplo['id']}</td>";
            echo "<td>{$exemplo['titulo']}</td>";
            echo "<td>{$exemplo['km_real']}</td>";
            echo "<td>{$exemplo['odometro_final']}</td>";
            echo "<td>{$exemplo['odometro_inicial_calculado']}</td>";
            echo "<td>{$exemplo['odometro_final_calculado']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p>⚠️ Nenhuma rota encontrada para exibir.</p>";
    }
    
    // 2. Exemplo da tabela viagens
    echo "<h4>🚗 Tabela viagens:</h4>";
    $stmt = $pdo->query("
        SELECT 
            v.id,
            v.cliente,
            v.km_inicial,
            v.km_final,
            v.odometro_final,
            v.km_gps_final
        FROM viagens v 
        WHERE v.odometro_final IS NOT NULL
        ORDER BY v.id DESC
        LIMIT 3
    ");
    
    $exemplosViagens = $stmt->fetchAll();
    
    if ($exemplosViagens) {
        echo "<table border='1' style='border-collapse: collapse; margin: 10px 0;'>";
        echo "<tr><th>ID</th><th>Cliente</th><th>KM Inicial</th><th>KM Final</th><th>Odômetro Final</th><th>KM GPS Final</th></tr>";
        foreach ($exemplosViagens as $exemplo) {
            echo "<tr>";
            echo "<td>{$exemplo['id']}</td>";
            echo "<td>{$exemplo['cliente']}</td>";
            echo "<td>{$exemplo['km_inicial']}</td>";
            echo "<td>{$exemplo['km_final']}</td>";
            echo "<td>{$exemplo['odometro_final']}</td>";
            echo "<td>{$exemplo['km_gps_final']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p>⚠️ Nenhuma viagem encontrada para exibir.</p>";
    }
    
    echo "<h3>🎯 Próximos Passos:</h3>";
    echo "<ol>";
    echo "<li>✅ Coluna odometro_final criada nas tabelas solicitacoes_rotas e viagens</li>";
    echo "<li>✅ Dados existentes atualizados em ambas as tabelas</li>";
    echo "<li>🔧 Atualizar API rotas-recentes para usar a nova coluna odometro_final</li>";
    echo "<li>🔧 Atualizar dashboard para mostrar odômetro separado do GPS</li>";
    echo "<li>🔧 Atualizar entidades do app Android para incluir odometro_final</li>";
    echo "</ol>";
    
} catch (PDOException $e) {
    echo "<p style='color: red;'>❌ Erro: " . $e->getMessage() . "</p>";
}
?>
