<?php
/**
 * Script para Atualizar Chave FCM
 */

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

use ControleFrotas\Utils\Logger;

echo "🔑 ATUALIZANDO CHAVE FCM\n";
echo "========================\n\n";

// Verificar se a configuração existe
$configFCM = Database::queryOne("SELECT valor FROM configuracoes WHERE chave = 'fcm_server_key'");

if ($configFCM) {
    echo "✅ Configuração FCM encontrada\n";
    echo "📋 Valor atual: " . substr($configFCM['valor'], 0, 30) . "...\n\n";
    
    // Verificar se é a chave de placeholder
    if (strpos($configFCM['valor'], 'SUA_CHAVE_FCM') !== false) {
        echo "⚠️  Chave FCM é placeholder - precisa ser atualizada\n";
        echo "💡 Para obter a chave FCM:\n";
        echo "   1. Acesse: https://console.firebase.google.com\n";
        echo "   2. Selecione seu projeto\n";
        echo "   3. Vá em Configurações do Projeto > Cloud Messaging\n";
        echo "   4. Copie a 'Chave do servidor'\n\n";
        
        echo "🔧 Para atualizar, execute:\n";
        echo "UPDATE configuracoes SET valor = 'SUA_CHAVE_REAL_AQUI' WHERE chave = 'fcm_server_key';\n\n";
        
    } else {
        echo "✅ Chave FCM parece estar configurada corretamente\n";
        
        // Testar a chave
        echo "🧪 Testando chave FCM...\n";
        
        $fcmUrl = 'https://fcm.googleapis.com/fcm/send';
        $testData = [
            'to' => 'test_token',
            'notification' => [
                'title' => 'Teste',
                'body' => 'Teste de chave FCM'
            ]
        ];
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $fcmUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Authorization: key=' . $configFCM['valor'],
            'Content-Type: application/json'
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($testData));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode === 200) {
            $responseData = json_decode($response, true);
            if (isset($responseData['failure']) && $responseData['failure'] == 1) {
                echo "✅ Chave FCM válida (erro esperado para token de teste)\n";
            } else {
                echo "⚠️  Resposta inesperada: " . $response . "\n";
            }
        } else {
            echo "❌ Erro HTTP $httpCode: $response\n";
        }
    }
    
} else {
    echo "❌ Configuração FCM não encontrada\n";
    echo "💡 Execute: INSERT INTO configuracoes (chave, valor) VALUES ('fcm_server_key', 'SUA_CHAVE_FCM');\n";
}

echo "\n📊 VERIFICAÇÃO ADICIONAL:\n";
echo "========================\n";

// Verificar gestores
$gestores = Database::queryAll("SELECT COUNT(*) as total FROM fcm_tokens WHERE user_type = 'gestor' AND ativo = TRUE");
$totalGestores = $gestores[0]['total'];
echo "👥 Gestores com tokens ativos: $totalGestores\n";

// Verificar notificações
$notificacoes = Database::queryAll("SELECT COUNT(*) as total FROM notificacoes_push");
$totalNotificacoes = $notificacoes[0]['total'];
echo "📨 Total de notificações no banco: $totalNotificacoes\n";

// Verificar tabelas
$tabelas = Database::queryAll("SHOW TABLES LIKE 'notificacoes_push'");
if ($tabelas) {
    echo "✅ Tabela notificacoes_push existe\n";
} else {
    echo "❌ Tabela notificacoes_push não existe\n";
}

$tabelas = Database::queryAll("SHOW TABLES LIKE 'fcm_tokens'");
if ($tabelas) {
    echo "✅ Tabela fcm_tokens existe\n";
} else {
    echo "❌ Tabela fcm_tokens não existe\n";
}

echo "\n🎯 PRÓXIMOS PASSOS:\n";
echo "===================\n";
echo "1. ✅ Verificar se a chave FCM está correta\n";
echo "2. ✅ Testar o envio de notificações\n";
echo "3. ✅ Verificar se o app está configurado como gestor\n";
echo "4. ✅ Testar o fluxo completo\n";

echo "\n✅ Verificação concluída!\n";
?> 
