diff --git a/packages/component-helper-service/src/services/User.js b/packages/component-helper-service/src/services/User.js index dbd0eb1f2bf7b6e5995a27df258efbb6a532fb3d..1878092704ad027560176e161e3a526367ea3363 100644 --- a/packages/component-helper-service/src/services/User.js +++ b/packages/component-helper-service/src/services/User.js @@ -67,7 +67,7 @@ class User { async updateUserTeams({ userId, teamId }) { const user = await this.UserModel.find(userId) user.teams.push(teamId) - user.save() + await user.save() } async getActiveAuthors({ fragmentAuthors }) { diff --git a/packages/component-manuscript-manager/src/routes/fragments/patch.js b/packages/component-manuscript-manager/src/routes/fragments/patch.js index 3337811e3b0861474fb12cc3e422c1b62e6df9eb..4f975c391c34232517734c2c3e920ad4bfefe7ca 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/patch.js +++ b/packages/component-manuscript-manager/src/routes/fragments/patch.js @@ -1,5 +1,6 @@ const { Team, + User, services, Fragment, Collection, @@ -43,6 +44,7 @@ module.exports = models => async (req, res) => { const collectionHelper = new Collection({ collection }) const fragmentHelper = new Fragment({ fragment }) + const userHelper = new User({ UserModel: models.User }) const strategies = { he: heRequestRevision, @@ -61,6 +63,7 @@ module.exports = models => async (req, res) => { try { const newFragment = await strategies[role].execute({ models, + userHelper, notification, fragmentHelper, collectionHelper, diff --git a/packages/component-manuscript-manager/src/routes/fragments/strategies/eicRequestRevision.js b/packages/component-manuscript-manager/src/routes/fragments/strategies/eicRequestRevision.js index 671c507d14d2fc377015764e425c13787601ea05..d62b0b83d4058b26568ac939f4eb7d0417a7d78d 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/strategies/eicRequestRevision.js +++ b/packages/component-manuscript-manager/src/routes/fragments/strategies/eicRequestRevision.js @@ -1,7 +1,11 @@ -const { union } = require('lodash') - module.exports = { - execute: async ({ models, TeamHelper, fragmentHelper, collectionHelper }) => { + execute: async ({ + models, + userHelper, + TeamHelper, + fragmentHelper, + collectionHelper, + }) => { const eicRequestToRevision = fragmentHelper.getLatestEiCRequestToRevision() if (!eicRequestToRevision) { throw new Error('No Editor in Chief request to revision has been found.') @@ -18,26 +22,16 @@ module.exports = { fragmentId: newFragment.id, }) - const authorIds = newFragment.authors.map(auth => { - const { id } = auth - return id - }) + const authorIds = newFragment.authors.map(auth => auth.id) - let authorsTeam = await teamHelper.getTeam({ + const { id: teamId } = await teamHelper.createTeam({ role: 'author', + members: authorIds, objectType: 'fragment', }) - - if (!authorsTeam) { - authorsTeam = await teamHelper.createTeam({ - role: 'author', - members: authorIds, - objectType: 'fragment', - }) - } else { - authorsTeam.members = union(authorsTeam.members, authorIds) - await authorsTeam.save() - } + authorIds.forEach(id => { + userHelper.updateUserTeams({ userId: id, teamId }) + }) await collectionHelper.updateStatus({ newStatus: 'submitted' }) diff --git a/packages/component-manuscript-manager/src/routes/fragments/strategies/heRequestRevision.js b/packages/component-manuscript-manager/src/routes/fragments/strategies/heRequestRevision.js index fcba20ed4340fb88b2df9b1531f72b5157291b56..2a20da7ba12d003e43ddd97e7e0e814bc1ed225e 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/strategies/heRequestRevision.js +++ b/packages/component-manuscript-manager/src/routes/fragments/strategies/heRequestRevision.js @@ -1,8 +1,7 @@ -const { union } = require('lodash') - module.exports = { execute: async ({ models, + userHelper, TeamHelper, notification, fragmentHelper, @@ -36,26 +35,16 @@ module.exports = { await newFragment.save() } - const authorIds = newFragment.authors.map(auth => { - const { id } = auth - return id - }) + const authorIds = newFragment.authors.map(auth => auth.id) - let authorsTeam = await teamHelper.getTeam({ + const { id: teamId } = await teamHelper.createTeam({ role: 'author', + members: authorIds, objectType: 'fragment', }) - - if (!authorsTeam) { - authorsTeam = await teamHelper.createTeam({ - role: 'author', - members: authorIds, - objectType: 'fragment', - }) - } else { - authorsTeam.members = union(authorsTeam.members, authorIds) - await authorsTeam.save() - } + authorIds.forEach(id => { + userHelper.updateUserTeams({ userId: id, teamId }) + }) const fragments = await collectionHelper.getAllFragments({ FragmentModel: models.Fragment,