<?php
/**
 * Script de Teste - Registrar Token FCM via Web
 * Acesse: https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/teste-registro-token-web.php
 */

require_once __DIR__ . '/config/bootstrap.php';

use ControleFrotas\Utils\Logger;

echo "<h1>🔧 TESTE DE REGISTRO DE TOKEN FCM</h1>";
echo "<hr>";

// Verificar se a tabela existe
$tabelaExiste = Database::queryOne("SHOW TABLES LIKE 'fcm_tokens'");

if (!$tabelaExiste) {
    echo "<p style='color: red;'>❌ Tabela fcm_tokens não existe</p>";
    echo "<p>💡 Criando tabela...</p>";
    
    $sql = "CREATE TABLE IF NOT EXISTS fcm_tokens (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id VARCHAR(50) NOT NULL,
        user_type ENUM('gestor', 'motorista') NOT NULL,
        token VARCHAR(500) NOT NULL,
        device_id VARCHAR(100) NULL,
        device_name VARCHAR(100) DEFAULT 'Android Device',
        app_version VARCHAR(20) DEFAULT '1.0.0',
        platform VARCHAR(20) DEFAULT 'android',
        ativo BOOLEAN DEFAULT TRUE,
        ultimo_uso TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        
        INDEX idx_user_id (user_id),
        INDEX idx_user_type (user_type),
        INDEX idx_token (token(100)),
        INDEX idx_ativo (ativo),
        UNIQUE KEY unique_user_token (user_id, token(100))
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
    
    Database::execute($sql);
    echo "<p style='color: green;'>✅ Tabela fcm_tokens criada!</p>";
}

// Dados de teste
$testData = [
    'user_id' => 'admin',
    'user_type' => 'gestor',
    'token' => 'test_token_fcm_' . time(), // Token de teste
    'device_id' => 'test_device_' . time(),
    'device_name' => 'Samsung Galaxy S21 (Teste)',
    'app_version' => '1.0.0',
    'platform' => 'android'
];

echo "<h2>📱 Registrando token de teste...</h2>";
echo "<ul>";
echo "<li><strong>User ID:</strong> {$testData['user_id']}</li>";
echo "<li><strong>User Type:</strong> {$testData['user_type']}</li>";
echo "<li><strong>Device ID:</strong> {$testData['device_id']}</li>";
echo "<li><strong>Token:</strong> {$testData['token']}</li>";
echo "</ul>";

try {
    // Verificar se já existe um registro para este usuário
    $existing = Database::queryOne(
        "SELECT id FROM fcm_tokens WHERE user_id = ?",
        [$testData['user_id']]
    );
    
    if ($existing) {
        echo "<p>🔄 Atualizando registro existente...</p>";
        
        $sql = "UPDATE fcm_tokens SET 
                token = ?, 
                user_type = ?, 
                device_id = ?, 
                device_name = ?, 
                app_version = ?, 
                platform = ?, 
                ativo = TRUE, 
                ultimo_uso = NOW() 
                WHERE user_id = ?";
        
        Database::execute($sql, [
            $testData['token'],
            $testData['user_type'],
            $testData['device_id'],
            $testData['device_name'],
            $testData['app_version'],
            $testData['platform'],
            $testData['user_id']
        ]);
        
        echo "<p style='color: green;'>✅ Registro atualizado com sucesso!</p>";
    } else {
        echo "<p>➕ Criando novo registro...</p>";
        
        $sql = "INSERT INTO fcm_tokens 
                (user_id, user_type, token, device_id, device_name, app_version, platform, ativo) 
                VALUES (?, ?, ?, ?, ?, ?, ?, TRUE)";
        
        Database::execute($sql, [
            $testData['user_id'],
            $testData['user_type'],
            $testData['token'],
            $testData['device_id'],
            $testData['device_name'],
            $testData['app_version'],
            $testData['platform']
        ]);
        
        echo "<p style='color: green;'>✅ Registro criado com sucesso!</p>";
    }
    
    // Verificar registros após inserção
    echo "<h2>📊 Verificando registros após inserção...</h2>";
    $total = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens")['total'];
    echo "<p><strong>Total de registros:</strong> $total</p>";
    
    $gestores = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens WHERE user_type = 'gestor'")['total'];
    echo "<p><strong>Gestores registrados:</strong> $gestores</p>";
    
    $motoristas = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens WHERE user_type = 'motorista'")['total'];
    echo "<p><strong>Motoristas registrados:</strong> $motoristas</p>";
    
    // Listar registros
    echo "<h2>📋 Registros na tabela:</h2>";
    $registros = Database::queryAll("SELECT * FROM fcm_tokens ORDER BY created_at DESC");
    
    if (empty($registros)) {
        echo "<p style='color: red;'>❌ Nenhum registro encontrado</p>";
    } else {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr style='background-color: #f0f0f0;'>";
        echo "<th>ID</th><th>User ID</th><th>User Type</th><th>Device ID</th><th>Token</th><th>Ativo</th><th>Criado</th>";
        echo "</tr>";
        
        foreach ($registros as $registro) {
            echo "<tr>";
            echo "<td>{$registro['id']}</td>";
            echo "<td>{$registro['user_id']}</td>";
            echo "<td>{$registro['user_type']}</td>";
            echo "<td>{$registro['device_id']}</td>";
            echo "<td>" . substr($registro['token'], 0, 30) . "...</td>";
            echo "<td>" . ($registro['ativo'] ? 'Sim' : 'Não') . "</td>";
            echo "<td>{$registro['created_at']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    echo "<h2 style='color: green;'>✅ Teste de registro concluído com sucesso!</h2>";
    echo "<p>💡 Agora você pode testar o envio de notificações</p>";
    
    // Link para testar notificação
    echo "<p><a href='teste-notificacao-gestor.php' style='background-color: #4CAF50; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;'>🧪 Testar Notificação Push</a></p>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ Erro ao registrar token: " . $e->getMessage() . "</p>";
    echo "<pre>" . $e->getTraceAsString() . "</pre>";
}
?> 
