Skip to content
Snippets Groups Projects
notifications.js 3.86 KiB
Newer Older
const config = require('config')
const Email = require('@pubsweet/component-email-templating')
const { name: journalName, staffEmail } = config.get('journal')

const {
  User,
  services,
  Fragment,
} = require('pubsweet-component-helper-service')

const { getEmailCopy } = require('./emailCopy')

const unsubscribeSlug = config.get('unsubscribe.url')
    baseUrl,
    invitedHE,
    collection,
    isCanceled = false,
    models: { User: UserModel, Fragment: FragmentModel },
    const fragmentId = last(collection.fragments)
    const fragment = await FragmentModel.find(fragmentId)
    const fragmentHelper = new Fragment({ fragment })
    const { title } = await fragmentHelper.getFragmentData()
    const { submittingAuthor } = await fragmentHelper.getAuthorData({
      UserModel,
    })

    const titleText = `the manuscript titled "${title}" by ${
      submittingAuthor.firstName
    } ${submittingAuthor.lastName}`
    const eics = await userHelper.getEditorsInChief()
    const eic = eics[0]
    const eicName = `${eic.firstName} ${eic.lastName}`
    const { customId } = collection
    const { paragraph, ...bodyProps } = getEmailCopy({
      titleText,
      targetUserName: eicName,
      emailType: isCanceled ? 'he-revoked' : 'he-assigned',
    })

      fromEmail: `${journalName} <${staffEmail}>`,
      toUser: {
        email: invitedHE.email,
      },
      content: {
        subject: isCanceled
          ? `${customId}: Editor invitation cancelled`
          : `${customId}: Invitation to edit a manuscript`,
        paragraph,
        signatureName: eicName,
        ctaLink: services.createUrl(
          baseUrl,
          `/projects/${collection.id}/versions/${fragment.id}/details`,
        ),
        ctaText: 'MANUSCRIPT DETAILS',
        unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
          id: invitedHE.id,
          token: invitedHE.accessTokens.unsubscribe,
        }),
      },
      bodyProps,
    })

  },
  sendEiCEmail: async ({
    reason,
    baseUrl,
    invitedHE,
    collection,
    isAccepted = false,
    models: { User: UserModel, Fragment: FragmentModel },
  }) => {
    const fragmentId = last(collection.fragments)
    const fragment = await FragmentModel.find(fragmentId)
    const fragmentHelper = new Fragment({ fragment })
    const { title } = await fragmentHelper.getFragmentData()
    const { submittingAuthor } = await fragmentHelper.getAuthorData({
      UserModel,
    })

    const titleText = `the manuscript titled "${title}" by ${
      submittingAuthor.firstName
    } ${submittingAuthor.lastName}`

    const userHelper = new User({ UserModel })
    const eics = await userHelper.getEditorsInChief()
    const eic = eics[0]
    const eicName = `${eic.firstName} ${eic.lastName}`
    const { customId } = collection

    const emailType = isAccepted ? 'he-accepted' : 'he-declined'

    const { paragraph, ...bodyProps } = getEmailCopy({
      emailType,
      titleText,
      comments: reason ? `Reason: "${reason}"` : '',
      targetUserName: `${invitedHE.lastName}`,
    })

    const email = new Email({
      type: 'user',
      fromEmail: `${journalName} <${staffEmail}>`,
      toUser: {
        email: eic.email,
      },
        subject: isAccepted
          ? `${customId}: Editor invitation accepted`
          : `${customId}: Editor invitation declined`,
        paragraph,
        signatureName: eicName,
        ctaLink: services.createUrl(
          baseUrl,
          `/projects/${collection.id}/versions/${fragment.id}/details`,
        ),
        ctaText: 'MANUSCRIPT DETAILS',
        unsubscribeLink: services.createUrl(baseUrl),