<?php
/**
 * Script para testar sincronização de token FCM via navegador
 */

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

use ControleFrotas\Config\Database;
use ControleFrotas\Utils\Logger;

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

echo "<h1>🔄 Teste de Sincronização de Token FCM</h1>";
echo "<hr>";

try {
    // 1. Verificar se a tabela fcm_tokens existe
    echo "<h2>1. Verificando tabela fcm_tokens...</h2>";
    
    $tabelaExiste = Database::queryOne(
        "SELECT COUNT(*) as total FROM information_schema.tables 
         WHERE table_schema = DATABASE() AND table_name = 'fcm_tokens'"
    );
    
    if ($tabelaExiste['total'] == 0) {
        echo "<p style='color: red;'>❌ Tabela fcm_tokens não existe!</p>";
        echo "<p>Criando tabela...</p>";
        
        $sql = "CREATE TABLE fcm_tokens (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id VARCHAR(100) NOT NULL,
            token TEXT NOT NULL,
            device_id VARCHAR(255),
            device_name VARCHAR(255),
            app_version VARCHAR(50),
            platform VARCHAR(50) 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,
            UNIQUE KEY unique_user_device (user_id, device_id),
            INDEX idx_user_id (user_id),
            INDEX idx_ativo (ativo)
        )";
        
        Database::execute($sql);
        echo "<p style='color: green;'>✅ Tabela fcm_tokens criada com sucesso!</p>";
    } else {
        echo "<p style='color: green;'>✅ Tabela fcm_tokens existe</p>";
    }
    
    // 2. Inserir token de teste
    echo "<h2>2. Inserindo token de teste...</h2>";
    
    $userId = "admin";
    $token = "test_token_" . time() . "_" . rand(1000, 9999);
    $deviceId = "test_device_" . rand(100000, 999999);
    $deviceName = "Test Device";
    $appVersion = "1.0.0";
    $platform = "android";
    
    // Desativar tokens antigos do mesmo dispositivo
    Database::execute(
        "UPDATE fcm_tokens SET ativo = FALSE 
         WHERE user_id = ? AND device_id = ?",
        [$userId, $deviceId]
    );
    
    // Inserir novo token
    $sql = "INSERT INTO fcm_tokens 
            (user_id, token, device_id, device_name, app_version, platform, ativo, ultimo_uso)
            VALUES (?, ?, ?, ?, ?, ?, TRUE, NOW())
            ON DUPLICATE KEY UPDATE 
            token = VALUES(token),
            device_name = VALUES(device_name),
            app_version = VALUES(app_version),
            ativo = TRUE,
            ultimo_uso = NOW()";
    
    Database::execute($sql, [
        $userId, $token, $deviceId, $deviceName, $appVersion, $platform
    ]);
    
    echo "<p style='color: green;'>✅ Token de teste inserido:</p>";
    echo "<ul>";
    echo "<li><strong>User ID:</strong> $userId</li>";
    echo "<li><strong>Token:</strong> $token</li>";
    echo "<li><strong>Device ID:</strong> $deviceId</li>";
    echo "<li><strong>Platform:</strong> $platform</li>";
    echo "</ul>";
    
    // 3. Verificar tokens ativos
    echo "<h2>3. Verificando tokens ativos...</h2>";
    
    $tokens = Database::query(
        "SELECT user_id, device_id, device_name, platform, ultimo_uso 
         FROM fcm_tokens WHERE ativo = TRUE"
    );
    
    echo "<p><strong>📊 Tokens ativos encontrados:</strong> " . count($tokens) . "</p>";
    
    if (count($tokens) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>User ID</th><th>Device ID</th><th>Device Name</th><th>Platform</th><th>Último Uso</th></tr>";
        
        foreach ($tokens as $tokenData) {
            echo "<tr>";
            echo "<td>{$tokenData['user_id']}</td>";
            echo "<td>{$tokenData['device_id']}</td>";
            echo "<td>{$tokenData['device_name']}</td>";
            echo "<td>{$tokenData['platform']}</td>";
            echo "<td>{$tokenData['ultimo_uso']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p style='color: orange;'>⚠️ Nenhum token ativo encontrado</p>";
    }
    
    // 4. Testar envio de notificação
    echo "<h2>4. Testando envio de notificação...</h2>";
    
    $titulo = "Teste de Sincronização";
    $mensagem = "Token FCM sincronizado com sucesso! " . date('H:i:s');
    
    // Inserir notificação no banco
    Database::execute(
        "INSERT INTO notificacoes_push 
         (user_id, tipo, titulo, mensagem) 
         VALUES (?, 'teste', ?, ?)",
        [$userId, $titulo, $mensagem]
    );
    
    $notificacaoId = Database::lastInsertId();
    echo "<p style='color: green;'>✅ Notificação de teste criada (ID: $notificacaoId)</p>";
    
    // 5. Verificar notificações
    echo "<h2>5. Verificando notificações...</h2>";
    
    $notificacoes = Database::query(
        "SELECT id, tipo, titulo, mensagem, created_at 
         FROM notificacoes_push 
         WHERE user_id = ? 
         ORDER BY created_at DESC 
         LIMIT 5",
        [$userId]
    );
    
    echo "<p><strong>📋 Últimas notificações:</strong></p>";
    
    if (count($notificacoes) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr><th>ID</th><th>Tipo</th><th>Título</th><th>Mensagem</th><th>Criado em</th></tr>";
        
        foreach ($notificacoes as $notif) {
            echo "<tr>";
            echo "<td>{$notif['id']}</td>";
            echo "<td>{$notif['tipo']}</td>";
            echo "<td>{$notif['titulo']}</td>";
            echo "<td>{$notif['mensagem']}</td>";
            echo "<td>{$notif['created_at']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p style='color: orange;'>⚠️ Nenhuma notificação encontrada</p>";
    }
    
    echo "<hr>";
    echo "<h2>🎉 SINCRONIZAÇÃO CONCLUÍDA COM SUCESSO!</h2>";
    echo "<p>✅ Tabela fcm_tokens verificada/criada</p>";
    echo "<p>✅ Token de teste inserido</p>";
    echo "<p>✅ Notificação de teste criada</p>";
    echo "<p>✅ Sistema pronto para receber tokens do app</p>";
    
    echo "<h3>📱 PRÓXIMOS PASSOS:</h3>";
    echo "<ol>";
    echo "<li>Reinstale o app Android</li>";
    echo "<li>Configure como 'Gestor' na instalação</li>";
    echo "<li>Verifique os logs no Android Studio</li>";
    echo "<li>Use o botão 'Registrar Token FCM' nas configurações</li>";
    echo "</ol>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ ERRO: " . $e->getMessage() . "</p>";
    Logger::error('Erro no script de sincronização', [
        'error' => $e->getMessage(),
        'trace' => $e->getTraceAsString()
    ]);
}
?> 
