From 7c745af80cfbc63c8a5f69850a537e71f393b806 Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebi.mihalache@gmail.com> Date: Tue, 4 Dec 2018 13:32:35 +0200 Subject: [PATCH] refactor(submitRevision): update author team creation --- .../src/services/User.js | 2 +- .../src/routes/fragments/patch.js | 3 ++ .../strategies/eicRequestRevision.js | 32 ++++++++----------- .../fragments/strategies/heRequestRevision.js | 25 ++++----------- 4 files changed, 24 insertions(+), 38 deletions(-) diff --git a/packages/component-helper-service/src/services/User.js b/packages/component-helper-service/src/services/User.js index dbd0eb1f2..187809270 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 3337811e3..4f975c391 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 671c507d1..d62b0b83d 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 fcba20ed4..2a20da7ba 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, -- GitLab