const helpers = require('../helpers/helpers') const teamHelper = require('../helpers/Team') const config = require('config') const inviteHelper = require('../helpers/Invitation') const configRoles = config.get('roles') module.exports = models => async (req, res) => { const { role } = req.query if (!helpers.checkForUndefinedParams(role)) { res.status(400).json({ error: 'Role is required' }) return } if (!configRoles.collection.includes(role)) { res.status(400).json({ error: `Role ${role} is invalid` }) return } const { collectionId } = req.params console.log('req', role, collectionId) try { await models.Collection.find(collectionId) const members = await teamHelper.getTeamMembersByCollection( collectionId, role, models.Team, ) if (members === undefined) { res.status(400).json({ error: `The requested collection does not have a ${role} Team`, }) return } const membersData = members.map(async member => { const user = await models.User.find(member) if (role === 'author') { return user } const { timestamp, status } = inviteHelper.getInviteData( user.invitations, collectionId, role, ) return { name: `${user.firstName} ${user.lastName}`, timestamp, email: user.email, status, } }) const resBody = await Promise.all(membersData) res.status(200).json(resBody) } catch (e) { const notFoundError = await helpers.handleNotFoundError(e, 'collection') return res.status(notFoundError.status).json({ error: notFoundError.message, }) } }