diff --git a/packages/component-helper-service/src/services/Email.js b/packages/component-helper-service/src/services/Email.js index 16aea03c73f786fb8b3c3de7e54fa82e51580b57..64e5bfe6f541519edfbdfd7aea9fc08a35d88293 100644 --- a/packages/component-helper-service/src/services/Email.js +++ b/packages/component-helper-service/src/services/Email.js @@ -26,10 +26,11 @@ class Email { } async setupReviewersEmail({ - recommendation = {}, - isSubmitted = false, - agree = false, FragmentModel, + agree = false, + isSubmitted = false, + isRevision = false, + recommendation = {}, }) { const { baseUrl, @@ -56,16 +57,19 @@ class Email { (isSubmitted && submittedReview) || (!isSubmitted && !submittedReview) if (shouldReturnUser) return UserModel.find(inv.userId) }) + let emailType = 'agreed-reviewers-after-recommendation' let emailText, subject, manuscriptType + const userHelper = new User({ UserModel }) const eic = await userHelper.getEditorInChief() - const editorName = isSubmitted + let editorName = isSubmitted ? `${eic.firstName} ${eic.lastName}` : collection.handlingEditor.name let reviewers = await Promise.all(reviewerPromises) reviewers = reviewers.filter(Boolean) + if (agree) { subject = isSubmitted ? `${collection.customId}: Manuscript Decision` @@ -76,6 +80,12 @@ class Email { emailText = 'has now been rejected' if (recommendation === 'publish') emailText = 'will now be published' } + + if (isRevision) { + emailType = 'submitting-reviewers-after-revision' + subject = `${collection.customId}: Manuscript Update` + editorName = collection.handlingEditor.name + } } else { subject = `${collection.customId}: Reviewer Unassigned` manuscriptType = manuscriptTypes[type] @@ -84,13 +94,15 @@ class Email { reviewers.forEach(user => mailService.sendNotificationEmail({ - baseUrl, emailType, toEmail: user.email, meta: { + baseUrl, emailText, editorName, + collection, manuscriptType, + timestamp: Date.now(), emailSubject: subject, reviewerName: `${user.firstName} ${user.lastName}`, fragment: { diff --git a/packages/component-mail-service/src/Mail.js b/packages/component-mail-service/src/Mail.js index 67d85243bb0fe77362019e459356d1ac3e1dc92a..776d40bfb7896c5c03b62e075e231fc3ff0d297b 100644 --- a/packages/component-mail-service/src/Mail.js +++ b/packages/component-mail-service/src/Mail.js @@ -601,6 +601,24 @@ module.exports = { replacements.signatureName }` break + case 'submitting-reviewers-after-revision': + subject = meta.emailSubject + replacements.previewText = 'A manuscript has been updated' + replacements.intro = `Dear Dr. ${meta.reviewerName}` + + replacements.paragraph = `A new version of the manuscript titled "${ + meta.fragment.title + }" by ${meta.fragment.authorName} has been submitted.` + replacements.beforeAnchor = `As you have reviewed the previous version of this manuscript, I would be grateful if you can review this revised version and submit a review report by ${helpers.getExpectedDate( + meta.timestamp, + 14, + )}. You can download the PDF of the revised version and submit your new review from the following URL:` + + replacements.signatureName = meta.editorName + textBody = `${replacements.intro} ${replacements.paragraph} ${ + replacements.beforeAnchor + } ${replacements.detailsUrl} ${replacements.signatureName}` + break default: subject = 'Hindawi Notification!' break diff --git a/packages/component-manuscript-manager/src/routes/fragments/patch.js b/packages/component-manuscript-manager/src/routes/fragments/patch.js index 7f3472a3cc103febb370b3b06731f5b2bc301ee6..155a5bdaebebd03130a2711b863b046c20aeef5c 100644 --- a/packages/component-manuscript-manager/src/routes/fragments/patch.js +++ b/packages/component-manuscript-manager/src/routes/fragments/patch.js @@ -104,8 +104,8 @@ module.exports = models => async (req, res) => { fragment.submitted = Date.now() fragment = await fragment.save() + if (heRecommendation.recommendation === 'major') { - const fragmentHelper = new Fragment({ fragment }) const parsedFragment = await fragmentHelper.getFragmentData({ handlingEditor: collection.handlingEditor, }) @@ -120,6 +120,12 @@ module.exports = models => async (req, res) => { baseUrl: services.getBaseUrl(req), }) email.setupNewVersionSubmittedEmail() + email.setupReviewersEmail({ + agree: true, + isRevision: true, + isSubmitted: true, + FragmentModel: models.Fragment, + }) } return res.status(200).json(fragment)