From 694814bd1a6dfd85db1a049a0d84369da3a383b4 Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebi.mihalache@gmail.com> Date: Fri, 9 Nov 2018 17:14:56 +0200 Subject: [PATCH] fix(mts-package): fix CR notes --- .../src/services/Fragment.js | 22 ++++++--- .../routes/fragmentsRecommendations/post.js | 46 +++++++++++-------- .../src/templateSetters.js | 2 - 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/component-helper-service/src/services/Fragment.js b/packages/component-helper-service/src/services/Fragment.js index 5ed798f66..c446159b4 100644 --- a/packages/component-helper-service/src/services/Fragment.js +++ b/packages/component-helper-service/src/services/Fragment.js @@ -2,7 +2,7 @@ const { get, remove } = require('lodash') const config = require('config') const User = require('./User') -const { recommendations: confRecommendations } = config +const { recommendations: configRecommendations } = config class Fragment { constructor({ fragment }) { @@ -151,26 +151,36 @@ class Fragment { } async getReviewersAndEditorsData({ collection, UserModel }) { - const { recommendations } = this.fragment + const { + invitations = [], + recommendations = [], + submitted = Date.now(), + } = this.fragment + const revAndEditorData = await Promise.all( recommendations.map(async rec => { const user = await UserModel.find(rec.userId) let assignmentDate, isReviewer - if (rec.recommendationType === confRecommendations.type.editor) { + if (rec.recommendationType === configRecommendations.type.editor) { + if (!collection.handlingEditor) { + throw new Error( + `Collection ${collection.id} does not have a Handling Editor`, + ) + } if (user.id === collection.handlingEditor.id) { const editorInvitation = collection.invitations.find( inv => inv.userId === user.id, ) assignmentDate = editorInvitation.respondedOn } else { - assignmentDate = this.fragment.submitted + assignmentDate = submitted } isReviewer = false } else { - const reviewerInvitation = this.fragment.invitations.find( + const reviewerInvitation = invitations.find( inv => inv.userId === user.id, ) assignmentDate = reviewerInvitation.respondedOn @@ -186,8 +196,8 @@ class Fragment { country: user.country, lastName: user.lastName, firstName: user.firstName, - submissionDate: rec.createdOn, affiliation: user.affiliation, + submissionDate: rec.createdOn, } }), ) diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 96bf179a7..8beac7813 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -2,6 +2,7 @@ const uuid = require('uuid') const { pick, get, set, has, isEmpty } = require('lodash') const config = require('config') const { v4 } = require('uuid') +const logger = require('@pubsweet/logger') const { services, @@ -94,24 +95,33 @@ module.exports = models => async (req, res) => { // the manuscript has not yet passed through the EQA process so we need to upload it to the FTP server if (isEditorInChief && recommendation === 'publish' && !hasEQA) { if (features.mts) { - collection.fragments.forEach(async fragmentId => { - const fragment = await models.Fragment.find(fragmentId) - const fragmentHelper = new Fragment({ fragment }) - - const fragmentUsers = await fragmentHelper.getReviewersAndEditorsData( - { - collection, - UserModel: models.User, - }, - ) - - await sendMTSPackage({ - collection, - fragment, - isEQA: true, - fragmentUsers, - }) - }) + await Promise.all( + collection.fragments.map(async fragmentId => { + const fragment = await models.Fragment.find(fragmentId) + const fragmentHelper = new Fragment({ fragment }) + + let fragmentUsers = [] + try { + fragmentUsers = await fragmentHelper.getReviewersAndEditorsData({ + collection, + UserModel: models.User, + }) + + await sendMTSPackage({ + collection, + fragment, + isEQA: true, + fragmentUsers, + }) + } catch (e) { + logger.error(e) + } + }), + ).catch(e => + res.status(500).json({ + error: 'Something went wrong.', + }), + ) } collection.status = 'inQA' diff --git a/packages/component-mts-package/src/templateSetters.js b/packages/component-mts-package/src/templateSetters.js index 4ede2d028..31de2d28e 100644 --- a/packages/component-mts-package/src/templateSetters.js +++ b/packages/component-mts-package/src/templateSetters.js @@ -5,8 +5,6 @@ const { set, get, reduce, isEmpty, capitalize } = require('lodash') const manuscriptTypes = config.get('journalConfig.manuscriptTypes') -// const { defaultConfig, defaultParseXmlOptions } = require('../config/default') - module.exports = { setMetadata: ({ metadata, jsonTemplate, options, fileName }) => { const titleGroup = { -- GitLab