-
Sebastian authored2e663733
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
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
// TO DO: authsome
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
try {
const collection = 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
}
// TO DO: handle case for when the invitationID is provided
const membersData = members.map(async member => {
const user = await models.User.find(member)
const { timestamp, status, id } = inviteHelper.getInvitationData(
collection.invitations,
user.id,
role,
)
return {
name: `${user.firstName} ${user.lastName}`,
timestamp,
email: user.email,
status,
invitationId: id,
}
})
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,
})
}
}