<?php
/**
 * Teste de Notificação com Chave FCM Atual
 */

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

use ControleFrotas\Utils\Logger;

echo "🧪 TESTE DE NOTIFICAÇÃO COM CHAVE ATUAL\n";
echo "=======================================\n\n";

// Obter chave FCM atual
$fcmKey = Database::queryOne("SELECT valor FROM configuracoes WHERE chave = 'fcm_server_key'");

if (!$fcmKey) {
    echo "❌ Chave FCM não encontrada\n";
    exit;
}

echo "📱 Chave FCM: " . substr($fcmKey['valor'], 0, 30) . "...\n\n";

// Buscar gestores
$gestores = Database::queryAll("SELECT token, user_id FROM fcm_tokens WHERE user_type = 'gestor' AND ativo = TRUE");

if (empty($gestores)) {
    echo "❌ Nenhum gestor com token ativo encontrado\n";
    echo "💡 Certifique-se de que:\n";
    echo "   1. O app está configurado como 'gestor'\n";
    echo "   2. O token FCM foi registrado\n";
    exit;
}

echo "👥 Encontrados " . count($gestores) . " gestores\n\n";

$fcmUrl = 'https://fcm.googleapis.com/fcm/send';
$successCount = 0;
$errorCount = 0;

foreach ($gestores as $gestor) {
    $token = $gestor['token'];
    $userId = $gestor['user_id'];
    
    echo "🎯 Testando gestor $userId...\n";
    
    // Payload de teste
    $notificationData = [
        'to' => $token,
        'notification' => [
            'title' => "🧪 TESTE DE NOTIFICAÇÃO",
            'body' => "Esta é uma notificação de teste - " . date('H:i:s'),
            'sound' => 'default',
            'badge' => '1',
            'icon' => 'ic_notification',
            'color' => '#FF5722',
            'priority' => 'high',
            'android_channel_id' => 'controle_frotas_channel'
        ],
        'data' => [
            'tipo' => 'teste',
            'timestamp' => time(),
            'click_action' => 'FLUTTER_NOTIFICATION_CLICK'
        ],
        'priority' => 'high',
        'android' => [
            'priority' => 'high',
            'notification' => [
                'sound' => 'default',
                'channel_id' => 'controle_frotas_channel',
                'priority' => 'high',
                'default_sound' => true,
                'default_vibrate_timings' => true,
                'default_light_settings' => true
            ]
        ]
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $fcmUrl);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: key=' . $fcmKey['valor'],
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($notificationData));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlError = curl_error($ch);
    curl_close($ch);
    
    if ($curlError) {
        echo "   ❌ Erro cURL: $curlError\n";
        $errorCount++;
        continue;
    }
    
    if ($httpCode === 200) {
        $responseData = json_decode($response, true);
        
        if (isset($responseData['success']) && $responseData['success'] == 1) {
            echo "   ✅ Notificação enviada com sucesso!\n";
            echo "   📱 Message ID: " . ($responseData['results'][0]['message_id'] ?? 'N/A') . "\n";
            $successCount++;
            
            // Registrar no banco
            Database::execute(
                "INSERT INTO notificacoes_push (user_id, user_type, tipo, titulo, mensagem, fcm_token, fcm_message_id, fcm_response, enviada, data_envio) 
                 VALUES (?, 'gestor', 'teste', ?, ?, ?, ?, ?, TRUE, NOW())",
                [
                    $userId,
                    '🧪 TESTE DE NOTIFICAÇÃO',
                    'Esta é uma notificação de teste - ' . date('H:i:s'),
                    substr($token, 0, 20) . '...',
                    $responseData['results'][0]['message_id'] ?? null,
                    $response
                ]
            );
            
        } else {
            echo "   ❌ Erro FCM: " . json_encode($responseData) . "\n";
            $errorCount++;
        }
    } else {
        echo "   ❌ Erro HTTP $httpCode: $response\n";
        $errorCount++;
    }
    
    echo "\n";
}

echo "📊 RESULTADO:\n";
echo "=============\n";
echo "✅ Sucessos: $successCount\n";
echo "❌ Erros: $errorCount\n";
echo "📱 Total de gestores: " . count($gestores) . "\n";

if ($successCount > 0) {
    echo "\n🎉 TESTE BEM-SUCEDIDO!\n";
    echo "💡 Verifique o celular do gestor - deve aparecer um popup de notificação.\n";
    echo "📱 A notificação deve aparecer mesmo com o app fechado.\n";
} else {
    echo "\n⚠️ TESTE FALHOU!\n";
    echo "🔧 Possíveis problemas:\n";
    echo "   1. Chave FCM incorreta\n";
    echo "   2. Tokens FCM inválidos\n";
    echo "   3. App não configurado corretamente\n";
    echo "   4. Firebase não funcionando\n";
}

echo "\n✅ Teste concluído!\n";
?> 
