<?php
/**
 * Script para testar registro de token via API
 */

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 Registro de Token via API</h1>";
echo "<hr>";

try {
    // Simular dados do app
    $userId = "admin";
    $token = "test_api_token_" . time() . "_" . rand(1000, 9999);
    $deviceId = "test_api_device_" . rand(100000, 999999);
    $deviceName = "Test API Device";
    $appVersion = "1.0.0";
    $platform = "android";
    
    echo "<h2>1. Dados de Teste</h2>";
    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>Device Name:</strong> $deviceName</li>";
    echo "<li><strong>App Version:</strong> $appVersion</li>";
    echo "<li><strong>Platform:</strong> $platform</li>";
    echo "</ul>";
    
    // 2. Simular chamada da API
    echo "<h2>2. Simulando chamada da API</h2>";
    
    // Preparar dados JSON
    $jsonData = json_encode([
        'user_id' => $userId,
        'token' => $token,
        'device_id' => $deviceId,
        'device_name' => $deviceName,
        'app_version' => $appVersion,
        'platform' => $platform
    ]);
    
    echo "<p><strong>JSON enviado:</strong></p>";
    echo "<pre style='background: #f8f9fa; padding: 10px; border-radius: 5px;'>$jsonData</pre>";
    
    // 3. Simular processamento da API
    echo "<h2>3. Processando registro...</h2>";
    
    // Desativar tokens antigos do mesmo dispositivo
    $tokensDesativados = Database::execute(
        "UPDATE fcm_tokens SET ativo = FALSE 
         WHERE user_id = ? AND device_id = ?",
        [$userId, $deviceId]
    );
    
    echo "<p>✅ Tokens antigos desativados: $tokensDesativados</p>";
    
    // Inserir ou atualizar 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
    ]);
    
    $tokenId = Database::lastInsertId();
    
    echo "<p style='color: green;'>✅ Token registrado com sucesso!</p>";
    echo "<p><strong>Token ID:</strong> $tokenId</p>";
    
    // 4. Verificar se foi registrado
    echo "<h2>4. Verificando registro...</h2>";
    
    $tokenRegistrado = Database::queryOne(
        "SELECT * FROM fcm_tokens WHERE id = ?",
        [$tokenId]
    );
    
    if ($tokenRegistrado) {
        echo "<p style='color: green;'>✅ Token encontrado no banco:</p>";
        echo "<ul>";
        echo "<li><strong>ID:</strong> {$tokenRegistrado['id']}</li>";
        echo "<li><strong>User ID:</strong> {$tokenRegistrado['user_id']}</li>";
        echo "<li><strong>Token:</strong> " . substr($tokenRegistrado['token'], 0, 20) . "...</li>";
        echo "<li><strong>Device ID:</strong> {$tokenRegistrado['device_id']}</li>";
        echo "<li><strong>Device Name:</strong> {$tokenRegistrado['device_name']}</li>";
        echo "<li><strong>Platform:</strong> {$tokenRegistrado['platform']}</li>";
        echo "<li><strong>Ativo:</strong> " . ($tokenRegistrado['ativo'] ? "Sim" : "Não") . "</li>";
        echo "<li><strong>Último Uso:</strong> {$tokenRegistrado['ultimo_uso']}</li>";
        echo "</ul>";
    } else {
        echo "<p style='color: red;'>❌ Token não encontrado no banco!</p>";
    }
    
    // 5. Testar envio de notificação
    echo "<h2>5. Testando envio de notificação...</h2>";
    
    $titulo = "Teste de API";
    $mensagem = "Token registrado via API com sucesso! " . date('H:i:s');
    
    // Inserir notificação no banco
    Database::execute(
        "INSERT INTO notificacoes_push 
         (user_id, tipo, titulo, mensagem) 
         VALUES (?, 'teste_api', ?, ?)",
        [$userId, $titulo, $mensagem]
    );
    
    $notificacaoId = Database::lastInsertId();
    echo "<p style='color: green;'>✅ Notificação de teste criada (ID: $notificacaoId)</p>";
    
    // 6. Simular resposta da API
    echo "<h2>6. Resposta da API</h2>";
    
    $resposta = [
        'success' => true,
        'user_id' => $userId,
        'token_registrado' => true,
        'platform' => $platform,
        'mensagem' => 'Token FCM registrado com sucesso'
    ];
    
    echo "<p><strong>Resposta JSON:</strong></p>";
    echo "<pre style='background: #f8f9fa; padding: 10px; border-radius: 5px;'>" . json_encode($resposta, JSON_PRETTY_PRINT) . "</pre>";
    
    echo "<hr>";
    echo "<h2>🎉 TESTE CONCLUÍDO COM SUCESSO!</h2>";
    echo "<p>✅ API funcionando corretamente</p>";
    echo "<p>✅ Token registrado no banco</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>";
    
    echo "<p><a href='verificar-tokens.php' style='background: #007bff; color: white; padding: 10px; text-decoration: none; border-radius: 5px;'>🔍 Verificar Tokens</a></p>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>❌ ERRO: " . $e->getMessage() . "</p>";
    Logger::error('Erro no teste de registro de token', [
        'error' => $e->getMessage(),
        'trace' => $e->getTraceAsString()
    ]);
}
?> 
