<?php
/**
 * Script de Teste - Enviar Notificação Push via Web
 * Acesse: https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/teste-notificacao-push-web.php
 */

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

use ControleFrotas\Utils\Logger;

echo "<h1>🚀 TESTE DE NOTIFICAÇÃO PUSH</h1>";
echo "<hr>";

// Verificar se há tokens registrados
$tokens = Database::queryAll("SELECT * FROM fcm_tokens WHERE ativo = TRUE");

if (empty($tokens)) {
    echo "<p style='color: red;'>❌ Nenhum token FCM encontrado</p>";
    echo "<p>💡 Execute primeiro: <a href='teste-registro-token-web.php'>Registrar Token de Teste</a></p>";
    exit;
}

echo "<h2>📱 Tokens encontrados: " . count($tokens) . "</h2>";

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

if (empty($fcmServerKey)) {
    echo "<p style='color: orange;'>⚠️ Chave FCM não configurada</p>";
    echo "<p>💡 Configure a chave FCM no banco de dados</p>";
    $fcmServerKey = "AAAA..."; // Chave de teste
}

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

// Dados da notificação de teste
$titulo = "🚗 Nova Solicitação de Viagem";
$mensagem = "Motorista João Silva solicitou viagem para Empresa ABC - Entrega de documentos";
$tipo = "solicitacao_viagem";

echo "<h2>📨 Enviando notificação de teste...</h2>";
echo "<ul>";
echo "<li><strong>Título:</strong> $titulo</li>";
echo "<li><strong>Mensagem:</strong> $mensagem</li>";
echo "<li><strong>Tipo:</strong> $tipo</li>";
echo "</ul>";

$successCount = 0;
$errorCount = 0;

foreach ($tokens as $token) {
    echo "<h3>📱 Enviando para: {$token['user_id']} ({$token['user_type']})</h3>";
    
    // Preparar dados da notificação
    $notificationData = [
        'to' => $token['token'],
        'notification' => [
            'title' => $titulo,
            'body' => $mensagem,
            'sound' => 'default',
            'badge' => '1',
            'icon' => 'ic_notification',
            'color' => '#4CAF50',
            'priority' => 'high',
            'android_channel_id' => 'controle_frotas_channel'
        ],
        'data' => [
            'tipo' => $tipo,
            'solicitacao_id' => '123',
            'tecnico_id' => '456',
            'cliente' => 'Empresa ABC',
            'motivo' => 'Entrega de documentos',
            '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_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    curl_close($ch);
    
    if ($httpCode == 200 && !$error) {
        $responseData = json_decode($response, true);
        
        if ($responseData && isset($responseData['success']) && $responseData['success'] == 1) {
            echo "<p style='color: green;'>✅ Notificação enviada com sucesso!</p>";
            $successCount++;
        } else {
            echo "<p style='color: red;'>❌ Erro na resposta FCM</p>";
            echo "<pre>$response</pre>";
            $errorCount++;
        }
    } else {
        echo "<p style='color: red;'>❌ Erro HTTP: $httpCode</p>";
        if ($error) {
            echo "<p>Erro cURL: $error</p>";
        }
        $errorCount++;
    }
    
    echo "<hr>";
}

echo "<h2>📊 Resumo do teste:</h2>";
echo "<ul>";
echo "<li><strong>Total de tokens:</strong> " . count($tokens) . "</li>";
echo "<li><strong>Enviados com sucesso:</strong> <span style='color: green;'>$successCount</span></li>";
echo "<li><strong>Erros:</strong> <span style='color: red;'>$errorCount</span></li>";
echo "</ul>";

if ($successCount > 0) {
    echo "<h2 style='color: green;'>✅ Teste concluído!</h2>";
    echo "<p>💡 Verifique se a notificação apareceu no app como popup</p>";
} else {
    echo "<h2 style='color: red;'>❌ Nenhuma notificação foi enviada</h2>";
    echo "<p>💡 Verifique a configuração do Firebase e os tokens</p>";
}

// Links úteis
echo "<h2>🔗 Links úteis:</h2>";
echo "<ul>";
echo "<li><a href='teste-registro-token-web.php'>Registrar Token de Teste</a></li>";
echo "<li><a href='verificar-tokens.php'>Verificar Tokens</a></li>";
echo "<li><a href='../admin/'>Painel Administrativo</a></li>";
echo "</ul>";
?> 
