<?php
/**
 * Script de Teste - Enviar Notificação Push Imediata
 * Testa o envio de notificações que aparecem como popup na tela
 */

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

use ControleFrotas\Utils\Logger;

echo "🚀 TESTE DE NOTIFICAÇÃO PUSH IMEDIATA\n";
echo "=====================================\n\n";

// Configuração do FCM
$fcmServerKey = Database::queryOne(
    "SELECT valor FROM configuracoes WHERE chave = 'fcm_server_key'"
)['valor'] ?? null;

if (empty($fcmServerKey)) {
    echo "❌ Chave FCM não configurada no banco de dados\n";
    echo "💡 Execute: INSERT INTO configuracoes (chave, valor) VALUES ('fcm_server_key', 'SUA_CHAVE_FCM_AQUI');\n";
    exit;
}

echo "✅ Chave FCM configurada: " . substr($fcmServerKey, 0, 20) . "...\n\n";

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

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

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

echo "📱 Encontrados " . count($gestores) . " gestores com tokens ativos\n\n";

$successCount = 0;
$errorCount = 0;

foreach ($gestores as $gestor) {
    $token = $gestor['token'];
    $userId = $gestor['user_id'];
    
    echo "🎯 Enviando para gestor $userId...\n";
    
    // Payload otimizado para aparecer como popup (igual WhatsApp)
    $notificationData = [
        'to' => $token,
        'notification' => [
            'title' => "🚗 NOVA SOLICITAÇÃO DE VIAGEM",
            'body' => "Motorista Administrador solicitou viagem para Empresa ABC - teste",
            'sound' => 'default',
            'badge' => '1',
            'icon' => 'ic_notification',
            'color' => '#4CAF50',
            'priority' => 'high',
            'android_channel_id' => 'controle_frotas_channel'
        ],
        'data' => [
            'tipo' => 'solicitacao_viagem',
            'solicitacao_id' => '14',
            'tecnico_id' => '4',
            'cliente' => 'Empresa ABC',
            'motivo' => '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
            ]
        ]
    ];
    
    // Enviar via FCM
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $fcmUrl);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: key=' . $fcmServerKey,
        '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, solicitacao_id, fcm_token, fcm_message_id, fcm_response, enviada, data_envio) 
                 VALUES (?, 'gestor', ?, ?, ?, ?, ?, ?, ?, TRUE, NOW())",
                [
                    $userId,
                    'solicitacao_viagem',
                    '🚗 NOVA SOLICITAÇÃO DE VIAGEM',
                    'Motorista Administrador solicitou viagem para Empresa ABC - teste',
                    14,
                    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 "📊 Resumo:\n";
echo "✅ Sucessos: $successCount\n";
echo "❌ Erros: $errorCount\n";
echo "📱 Total de gestores: " . count($gestores) . "\n";

if ($successCount > 0) {
    echo "\n🎉 Notificações enviadas! Verifique o celular do gestor.\n";
    echo "💡 A notificação deve aparecer como popup na tela, mesmo com o app fechado.\n";
} else {
    echo "\n⚠️ Nenhuma notificação foi enviada. Verifique:\n";
    echo "   1. Se a chave FCM está correta\n";
    echo "   2. Se os tokens dos gestores são válidos\n";
    echo "   3. Se o app está configurado corretamente\n";
}
?> 
