<?php
/**
 * Script para limpar tokens antigos e forçar nova sincronização
 */

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

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

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

echo "<h1>🧹 Limpeza e Sincronização de Tokens FCM</h1>";
echo "<hr>";

try {
    // 1. Verificar estado atual
    echo "<h2>1. Estado Atual</h2>";
    
    $totalTokens = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens")['total'];
    $tokensAtivos = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens WHERE ativo = TRUE")['total'];
    
    echo "<p><strong>Tokens antes da limpeza:</strong></p>";
    echo "<ul>";
    echo "<li>Total: $totalTokens</li>";
    echo "<li>Ativos: $tokensAtivos</li>";
    echo "</ul>";
    
    // 2. Limpar tokens antigos (mais de 1 hora)
    echo "<h2>2. Limpando tokens antigos...</h2>";
    
    $tokensRemovidos = Database::execute(
        "DELETE FROM fcm_tokens WHERE ultimo_uso < DATE_SUB(NOW(), INTERVAL 1 HOUR)"
    );
    
    echo "<p style='color: green;'>✅ Tokens antigos removidos: $tokensRemovidos</p>";
    
    // 3. Desativar tokens inativos
    echo "<h2>3. Desativando tokens inativos...</h2>";
    
    $tokensDesativados = Database::execute(
        "UPDATE fcm_tokens SET ativo = FALSE WHERE ultimo_uso < DATE_SUB(NOW(), INTERVAL 30 MINUTE)"
    );
    
    echo "<p style='color: green;'>✅ Tokens desativados: $tokensDesativados</p>";
    
    // 4. Inserir token de teste limpo
    echo "<h2>4. Inserindo token de teste limpo...</h2>";
    
    $userId = "admin";
    $token = "clean_token_" . time() . "_" . rand(1000, 9999);
    $deviceId = "clean_device_" . rand(100000, 999999);
    $deviceName = "Clean Test Device";
    $appVersion = "1.0.0";
    $platform = "android";
    
    // Inserir novo token
    $sql = "INSERT INTO fcm_tokens 
            (user_id, token, device_id, device_name, app_version, platform, ativo, ultimo_uso)
            VALUES (?, ?, ?, ?, ?, ?, TRUE, NOW())";
    
    Database::execute($sql, [
        $userId, $token, $deviceId, $deviceName, $appVersion, $platform
    ]);
    
    echo "<p style='color: green;'>✅ Token de teste limpo 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>";
    
    // 5. Verificar estado final
    echo "<h2>5. Estado Final</h2>";
    
    $totalTokensFinal = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens")['total'];
    $tokensAtivosFinal = Database::queryOne("SELECT COUNT(*) as total FROM fcm_tokens WHERE ativo = TRUE")['total'];
    
    echo "<p><strong>Tokens após limpeza:</strong></p>";
    echo "<ul>";
    echo "<li>Total: $totalTokensFinal</li>";
    echo "<li>Ativos: $tokensAtivosFinal</li>";
    echo "</ul>";
    
    // 6. Listar tokens ativos
    echo "<h2>6. Tokens Ativos</h2>";
    
    $tokensAtivos = Database::query(
        "SELECT * FROM fcm_tokens WHERE ativo = TRUE ORDER BY ultimo_uso DESC"
    );
    
    if (count($tokensAtivos) > 0) {
        echo "<table border='1' style='border-collapse: collapse; width: 100%;'>";
        echo "<tr>";
        echo "<th>ID</th>";
        echo "<th>User ID</th>";
        echo "<th>Token (primeiros 20 chars)</th>";
        echo "<th>Device ID</th>";
        echo "<th>Device Name</th>";
        echo "<th>Platform</th>";
        echo "<th>Último Uso</th>";
        echo "</tr>";
        
        foreach ($tokensAtivos as $token) {
            $tokenPreview = substr($token['token'], 0, 20) . "...";
            
            echo "<tr style='background-color: #e8f5e8;'>";
            echo "<td>{$token['id']}</td>";
            echo "<td>{$token['user_id']}</td>";
            echo "<td>{$tokenPreview}</td>";
            echo "<td>{$token['device_id']}</td>";
            echo "<td>{$token['device_name']}</td>";
            echo "<td>{$token['platform']}</td>";
            echo "<td>{$token['ultimo_uso']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<p style='color: orange;'>⚠️ Nenhum token ativo encontrado</p>";
    }
    
    echo "<hr>";
    echo "<h2>🎉 LIMPEZA E SINCRONIZAÇÃO CONCLUÍDAS!</h2>";
    echo "<p>✅ Tokens antigos removidos</p>";
    echo "<p>✅ Tokens inativos desativados</p>";
    echo "<p>✅ Token de teste limpo inserido</p>";
    echo "<p>✅ Sistema pronto para nova sincronização</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 script de limpeza', [
        'error' => $e->getMessage(),
        'trace' => $e->getTraceAsString()
    ]);
}
?> 
