/* eslint-disable promise/no-nesting */ const admin = require('firebase-admin'); const Logger = require('../Logger'); const mLogger = new Logger('admin', 'partyDashboard'); module.exports = async (req, res) => { mLogger.start(); var partyData = await admin .firestore() .collection('rooms') .get() .then((roomSnapshot) => { const docData = []; roomSnapshot.docs.forEach((doc) => { docData.push({ id: doc.id, createTime: doc.createTime.toDate().toUTCString(), updateTime: doc.updateTime.toDate().toUTCString(), source: doc.data().player.source, onCall: doc.data().hasOwnProperty('conference'), showName: doc.data().player.showName || '', time: doc.data().player.time || 0, status: doc.data().player.status || '', }); }); return docData; }) .catch((err) => { mLogger.error('FAILED TO RESOLVE PARTIES', err); res.status(500).send({ message: 'Unable to get all parties', error: err }); }); await partyData.forEach((party) => { const messageCount = admin .firestore() .collection('rooms') .doc(party.id) .collection('messages') .get() .then((snap) => snap.size); const userCount = admin .firestore() .collection('rooms') .doc(party.id) .collection('users') .get() .then((snap) => snap.size); party.messageCount = messageCount || 0; party.userCount = userCount || 0; }); mLogger.success('GOT ALL PARTIES', { parties: partyData.length }); return res.status(200).send({ partyData }); };