const { initFirebaseAdmin } = require('../config/firebaseAdmin');

const args = process.argv.slice(2);

const getArgValue = (flag) => {
    const index = args.indexOf(flag);
    if (index === -1) {
        return null;
    }
    return args[index + 1] || null;
};

const token = getArgValue('--token') || process.env.FCM_TEST_TOKEN;
const title = getArgValue('--title') || process.env.FCM_TEST_TITLE || 'Prueba desde Firebase Admin';
const body = getArgValue('--body') || process.env.FCM_TEST_BODY || 'Notificación de prueba';
const dryRun = args.includes('--dry-run');
const selfTest = args.includes('--self-test');

const admin = initFirebaseAdmin();

if (selfTest) {
    console.log('Firebase Admin inicializado correctamente.');
    process.exit(0);
}

if (!token) {
    console.error('Falta el token FCM. Usa --token o define FCM_TEST_TOKEN en el entorno.');
    process.exit(1);
}

const message = {
    token,
    notification: {
        title,
        body
    },
    data: {
        source: 'node-gestion-api',
        sentAt: new Date().toISOString()
    }
};

admin
    .messaging()
    .send(message, dryRun)
    .then((response) => {
        if (dryRun) {
            console.log('Dry run OK:', response);
            return;
        }
        console.log('Mensaje enviado:', response);
    })
    .catch((error) => {
        console.error('Error al enviar la notificación:', error);
        process.exit(1);
    });
