<?php
// Criar tabela rastreamento_tempo_real se não existir
header('Content-Type: text/plain; charset=utf-8');

echo "=== CRIAÇÃO/VERIFICAÇÃO DA TABELA rastreamento_tempo_real ===\n\n";

try {
    // Conectar ao 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 "✅ Conexão com banco estabelecida!\n\n";
    
    // 1. Verificar se a tabela existe
    echo "1. 🔍 VERIFICANDO SE A TABELA EXISTE:\n";
    $stmt = $pdo->query("SHOW TABLES LIKE 'rastreamento_tempo_real'");
    $tabelaExiste = $stmt->rowCount() > 0;
    
    if ($tabelaExiste) {
        echo "✅ Tabela rastreamento_tempo_real JÁ EXISTE!\n\n";
        
        // Mostrar estrutura atual
        echo "2. 📋 ESTRUTURA ATUAL:\n";
        $stmt = $pdo->query("DESCRIBE rastreamento_tempo_real");
        $colunas = $stmt->fetchAll();
        
        foreach ($colunas as $coluna) {
            echo "   - " . $coluna['Field'] . " (" . $coluna['Type'] . ") " . 
                 ($coluna['Null'] == 'YES' ? 'NULL' : 'NOT NULL') . 
                 ($coluna['Key'] ? ' ' . $coluna['Key'] : '') . "\n";
        }
        
        echo "\n";
        
        // Contar registros
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM rastreamento_tempo_real");
        $total = $stmt->fetch();
        echo "3. 📊 TOTAL DE REGISTROS: " . $total['total'] . "\n\n";
        
    } else {
        echo "❌ Tabela rastreamento_tempo_real NÃO EXISTE!\n\n";
        
        // 2. Criar a tabela
        echo "2. 🔨 CRIANDO A TABELA:\n";
        
        $sql = "CREATE TABLE rastreamento_tempo_real (
            id BIGINT AUTO_INCREMENT PRIMARY KEY,
            tecnico_id VARCHAR(100) NOT NULL,
            viagem_id BIGINT NULL,
            latitude DECIMAL(10, 8) NOT NULL,
            longitude DECIMAL(11, 8) NOT NULL,
            velocidade DECIMAL(5, 2) DEFAULT 0,
            precisao DECIMAL(8, 2) DEFAULT 0,
            altitude DECIMAL(8, 2) DEFAULT 0,
            timestamp_gps DATETIME DEFAULT CURRENT_TIMESTAMP,
            battery_level INT DEFAULT NULL,
            is_online BOOLEAN DEFAULT TRUE,
            INDEX idx_viagem_id (viagem_id),
            INDEX idx_tecnico_id (tecnico_id),
            INDEX idx_timestamp (timestamp_gps)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
        
        try {
            $pdo->exec($sql);
            echo "   ✅ TABELA CRIADA COM SUCESSO!\n\n";
            
            // Verificar se foi criada
            $stmt = $pdo->query("SHOW TABLES LIKE 'rastreamento_tempo_real'");
            if ($stmt->rowCount() > 0) {
                echo "3. ✅ VERIFICAÇÃO: Tabela foi criada corretamente!\n\n";
                
                // Mostrar estrutura
                echo "4. 📋 ESTRUTURA CRIADA:\n";
                $stmt = $pdo->query("DESCRIBE rastreamento_tempo_real");
                $colunas = $stmt->fetchAll();
                
                foreach ($colunas as $coluna) {
                    echo "   - " . $coluna['Field'] . " (" . $coluna['Type'] . ") " . 
                         ($coluna['Null'] == 'YES' ? 'NULL' : 'NOT NULL') . 
                         ($coluna['Key'] ? ' ' . $coluna['Key'] : '') . "\n";
                }
            } else {
                echo "3. ❌ ERRO: Tabela não foi criada!\n";
            }
            
        } catch (Exception $e) {
            echo "   ❌ ERRO AO CRIAR TABELA: " . $e->getMessage() . "\n";
        }
    }
    
    // 4. Testar inserção
    echo "\n4. 🧪 TESTE DE INSERÇÃO:\n";
    try {
        $stmt = $pdo->prepare("
            INSERT INTO rastreamento_tempo_real (
                tecnico_id, viagem_id, latitude, longitude, velocidade, 
                precisao, altitude, timestamp_gps, battery_level, is_online
            ) VALUES (?, ?, ?, ?, ?, ?, ?, NOW(), ?, ?)
        ");
        
        $resultado = $stmt->execute([
            '4', // tecnico_id
            267, // viagem_id
            37.4219983, // latitude
            -122.084, // longitude
            0.0, // velocidade
            5.0, // precisao
            5.0, // altitude
            null, // battery_level
            1 // is_online
        ]);
        
        if ($resultado) {
            $id_inserido = $pdo->lastInsertId();
            echo "   ✅ INSERÇÃO DE TESTE BEM-SUCEDIDA! ID: $id_inserido\n";
            
            // Remover o registro de teste
            $stmt = $pdo->prepare("DELETE FROM rastreamento_tempo_real WHERE id = ?");
            $stmt->execute([$id_inserido]);
            echo "   🧹 Registro de teste removido\n";
        } else {
            echo "   ❌ FALHA NA INSERÇÃO DE TESTE!\n";
        }
    } catch (Exception $e) {
        echo "   ❌ ERRO NA INSERÇÃO DE TESTE: " . $e->getMessage() . "\n";
    }
    
    echo "\n=== FIM ===\n";
    
} catch (Exception $e) {
    echo "❌ ERRO GERAL: " . $e->getMessage() . "\n";
}
?>
