Newer
Older
Sebastian Mihalache
committed
const config = require('config')
const { get } = require('lodash')
const Email = require('@pubsweet/component-email-templating')
Sebastian Mihalache
committed
const unsubscribeSlug = config.get('unsubscribe.url')
const staffEmail = config.get('journal.staffEmail')
const journalName = config.get('journal.name')
Sebastian Mihalache
committed
const {
User,
services,
Fragment,
} = require('pubsweet-component-helper-service')
const { getEmailCopy } = require('./emailCopy')
module.exports = {
sendHandlingEditorEmail: async ({
Sebastian Mihalache
committed
baseUrl,
fragment,
reviewer,
UserModel,
Sebastian Mihalache
committed
collection,
}) => {
Sebastian Mihalache
committed
const fragmentHelper = new Fragment({ fragment })
const { title } = await fragmentHelper.getFragmentData({
handlingEditor: collection.handlingEditor,
})
const { submittingAuthor } = await fragmentHelper.getAuthorData({
UserModel,
})
const titleText = `the manuscript titled "${title}" by ${
submittingAuthor.firstName
Sebastian Mihalache
committed
const handlingEditor = get(collection, 'handlingEditor')
const userHelper = new User({ UserModel })
const eicName = await userHelper.getEiCName()
Sebastian Mihalache
committed
const heUser = await UserModel.find(handlingEditor.id)
const { paragraph, ...bodyProps } = getEmailCopy({
emailType,
titleText,
expectedDate: services.getExpectedDate({
timestamp: Date.now(),
daysExpected: 14,
}),
targetUserName: reviewer.lastName,
})
Sebastian Mihalache
committed
const email = new Email({
fromEmail: `${eicName} <${staffEmail}>`,
Sebastian Mihalache
committed
type: 'user',
toUser: {
email: heUser.email,
name: heUser.lastName,
},
Sebastian Mihalache
committed
content: {
subject:
emailType === 'reviewer-accepted'
? `${collection.customId}: A reviewer has agreed`
: `${collection.customId}: A reviewer has declined`,
paragraph,
signatureJournal: '',
signatureName: eicName,
Sebastian Mihalache
committed
ctaLink: services.createUrl(
baseUrl,
`/projects/${collection.id}/versions/${fragment.id}/details`,
),
unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
id: heUser.id,
token: heUser.accessTokens.unsubscribe,
}),
Sebastian Mihalache
committed
},
bodyProps,
Sebastian Mihalache
committed
})
Andrei Cioromila
committed
return email.sendEmail()
Sebastian Mihalache
committed
},
sendReviewerEmail: async ({
baseUrl,
fragment,
reviewer,
UserModel,
collection,
isCanceled = false,
}) => {
const fragmentHelper = new Fragment({ fragment })
const { title } = await fragmentHelper.getFragmentData({
handlingEditor: collection.handlingEditor,
})
const { submittingAuthor } = await fragmentHelper.getAuthorData({
UserModel,
})
Sebastian Mihalache
committed
const titleText = `the manuscript titled "${title}" by ${
submittingAuthor.firstName
} ${submittingAuthor.lastName}`
const handlingEditor = get(collection, 'handlingEditor')
const emailType = isCanceled
? 'reviewer-cancel-invitation'
: 'reviewer-thank-you'
Sebastian Mihalache
committed
const { paragraph, ...bodyProps } = getEmailCopy({
Sebastian Mihalache
committed
emailType,
titleText,
})
Sebastian Mihalache
committed
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
const email = new Email({
fromEmail: `${handlingEditor.name} <${staffEmail}>`,
type: 'user',
toUser: {
email: reviewer.email,
name: `${reviewer.lastName}`,
},
content: {
subject: isCanceled
? `${collection.customId}: Review no longer required`
: `${collection.customId}: Thank you for agreeing to review`,
paragraph,
ctaText: 'MANUSCRIPT DETAILS',
signatureJournal: journalName,
signatureName: handlingEditor.name,
ctaLink: services.createUrl(
baseUrl,
`/projects/${collection.id}/versions/${fragment.id}/details`,
),
unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
id: reviewer.id,
token: reviewer.accessTokens.unsubscribe,
}),
},
bodyProps,
})
Andrei Cioromila
committed
return email.sendEmail()
},