diff --git a/packages/component-invite/src/routes/collectionsInvitations/decline.js b/packages/component-invite/src/routes/collectionsInvitations/decline.js index 5a955459be8839cdcbcec1ea500a6b6f7ee3f7da..036182660aec35ef2f6deab2e57340842f7056ec 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/decline.js +++ b/packages/component-invite/src/routes/collectionsInvitations/decline.js @@ -46,12 +46,21 @@ module.exports = models => async (req, res) => { await collection.save() await teamHelper.removeTeamMember(team.id, user.id, models.Team) user.teams = user.teams.filter(userTeamId => team.id !== userTeamId) + const fragment = await models.Fragment.find(collection.fragments[0]) + let { title } = fragment.metadata + title = title.replace(/<(.|\n)*?>/g, '') + + const submittingAuthorData = collection.authors.find( + author => author.isSubmitting === true, + ) + const author = await models.User.find(submittingAuthorData.userId) try { - await mailService.setupDeclineEmail( + await mailService.setupReviewerDeclineEmail( toEmail, user, - 'decline', - collection.customId, + collection, + title, + `${author.firstName} ${author.lastName}`, ) } catch (e) { logger.error(e) diff --git a/packages/component-invite/src/routes/collectionsInvitations/patch.js b/packages/component-invite/src/routes/collectionsInvitations/patch.js index 24e2012d50dc4d5ae1cf0a42d0ca52a528601f39..1d3ebb479fd06796f2fbbb5af3d44a41ffd38fcd 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/patch.js +++ b/packages/component-invite/src/routes/collectionsInvitations/patch.js @@ -76,13 +76,31 @@ module.exports = models => async (req, res) => { invitation.reason = reason } try { - await mailService.setupDeclineEmail( - toEmail, - user, - 'decline', - collection.customId, - reason, - ) + if (invitation.role === 'handlingEditor') { + await mailService.setupDeclineEmail( + toEmail, + user, + 'handling-editor-declined', + collection.customId, + reason, + ) + } else if (invitation.role === 'reviewer') { + const fragment = await models.Fragment.find(collection.fragments[0]) + let { title } = fragment.metadata + title = title.replace(/<(.|\n)*?>/g, '') + + const submittingAuthorData = collection.authors.find( + author => author.isSubmitting === true, + ) + const author = await models.User.find(submittingAuthorData.userId) + await mailService.setupReviewerDeclineEmail( + toEmail, + user, + collection, + title, + `${author.firstName} ${author.lastName}`, + ) + } } catch (e) { logger.error(e) return res.status(500).json({ error: 'Email could not be sent.' }) diff --git a/packages/component-mail-service/src/Mail.js b/packages/component-mail-service/src/Mail.js index b29e60fc3ae8166583c685b1f2e5be6cff45eec8..50aedbf85efd3095f8a6d53f3e558899cfc39e8f 100644 --- a/packages/component-mail-service/src/Mail.js +++ b/packages/component-mail-service/src/Mail.js @@ -198,6 +198,36 @@ module.exports = { } return Email.send(mailData) }, + setupReviewerDeclineEmail: async ( + toEmail, + invitedUser, + collection, + title, + authorName, + ) => { + const subject = `${collection.customId}: Review Unassigned` + + const replacements = { + reviewerName: `${invitedUser.firstName} ${invitedUser.lastName}`, + title, + editorName: collection.handlingEditor.name, + authorName, + staffEmail: config.get('mailer.from'), + } + + const { htmlBody, textBody } = getEmailBody( + 'unassign-reviewer', + replacements, + ) + const mailData = { + from: config.get('mailer.from'), + to: invitedUser.email, + subject, + text: textBody, + html: htmlBody, + } + return Email.send(mailData) + }, } const getEmailBody = (emailType, replacements) => { diff --git a/packages/component-mail-service/src/templates/unassign-reviewer.html b/packages/component-mail-service/src/templates/unassign-reviewer.html index 46a6f82bfb3e661894e034d3a60e3c48cc1b85dd..96858a5965da4224a504f4ff7b016b2ce12d4845 100644 --- a/packages/component-mail-service/src/templates/unassign-reviewer.html +++ b/packages/component-mail-service/src/templates/unassign-reviewer.html @@ -164,7 +164,7 @@ <tr> <td style="padding:30px 23px 0px 23px;background-color:#ffffff;" height="100%" valign="top" bgcolor="#ffffff"> <div> - <p data-pm-slice="1 1 []">Dear {{ reivewerName }},</p> + <p data-pm-slice="1 1 []">Dear {{ reviewerName }},</p> <p> </p> @@ -176,6 +176,7 @@ <p>Best regards, <br /> {{editorName}} </p> + <p> </p> </div> </td>