From 6dad946b19e1efdc268a3c77ad2c706934314690 Mon Sep 17 00:00:00 2001
From: Sebastian Mihalache <sebastian.mihalache@gmail.con>
Date: Wed, 12 Sep 2018 22:47:15 +0300
Subject: [PATCH] feat(emails): final updates for release emails

---
 .../src/routes/emails/helpers.js              |  2 +
 .../src/routes/emails/notifications.js        |  4 +-
 .../src/services/email/Email.js               |  1 +
 .../email/templates/partials/footer.hbs       | 10 ++---
 .../collectionsInvitations/emails/helpers.js  |  2 +
 .../emails/notifications.js                   |  6 +--
 .../fragments/notifications/emailCopy.js      | 12 +++---
 .../fragments/notifications/notifications.js  | 42 ++++++++-----------
 .../notifications/notifications.js            |  2 +
 9 files changed, 42 insertions(+), 39 deletions(-)

diff --git a/packages/component-email/src/routes/emails/helpers.js b/packages/component-email/src/routes/emails/helpers.js
index 6fcbd541b..fe28ae508 100644
--- a/packages/component-email/src/routes/emails/helpers.js
+++ b/packages/component-email/src/routes/emails/helpers.js
@@ -4,6 +4,7 @@ const { services } = require('pubsweet-component-helper-service')
 const { getEmailCopy } = require('./emailCopy')
 
 const confirmSignUp = config.get('confirm-signup.url')
+const { name: journalName, staffEmail } = config.get('journal')
 
 module.exports = {
   sendNewUserEmail: ({ email, role }) => {
@@ -12,6 +13,7 @@ module.exports = {
     let emailType
     if (role === 'Handling Editor') {
       emailType = 'he-added-by-admin'
+      email.fromEmail = `${journalName} <${staffEmail}>`
     } else {
       emailType = 'user-added-by-admin'
     }
diff --git a/packages/component-email/src/routes/emails/notifications.js b/packages/component-email/src/routes/emails/notifications.js
index 66f2dfa15..28791d3ba 100644
--- a/packages/component-email/src/routes/emails/notifications.js
+++ b/packages/component-email/src/routes/emails/notifications.js
@@ -2,6 +2,7 @@ const config = require('config')
 
 const unsubscribeSlug = config.get('unsubscribe.url')
 const resetPath = config.get('invite-reset-password.url')
+const staffEmail = config.get('journal.staffEmail')
 
 const { Email, services } = require('pubsweet-component-helper-service')
 
@@ -11,9 +12,10 @@ module.exports = {
   async sendNotifications({ user, baseUrl, role, UserModel }) {
     const email = new Email({
       type: 'user',
+      fromEmail: `Hindawi <${staffEmail}>`,
       toUser: {
         email: user.email,
-        name: `${user.firstName} ${user.lastName}`,
+        name: `${user.lastName}`,
       },
       content: {
         ctaLink: services.createUrl(baseUrl, resetPath, {
diff --git a/packages/component-helper-service/src/services/email/Email.js b/packages/component-helper-service/src/services/email/Email.js
index d161f2129..0271625e2 100644
--- a/packages/component-helper-service/src/services/email/Email.js
+++ b/packages/component-helper-service/src/services/email/Email.js
@@ -73,6 +73,7 @@ class Email {
     const { fromEmail: from } = this
     const { email: to } = this.toUser
     const { subject } = this.content
+
     const mailData = {
       to,
       text,
diff --git a/packages/component-helper-service/src/services/email/templates/partials/footer.hbs b/packages/component-helper-service/src/services/email/templates/partials/footer.hbs
index 355088275..f461fdbaa 100644
--- a/packages/component-helper-service/src/services/email/templates/partials/footer.hbs
+++ b/packages/component-helper-service/src/services/email/templates/partials/footer.hbs
@@ -1,12 +1,12 @@
 <div data-role="module-unsubscribe" class="module unsubscribe-css__unsubscribe___2CDlR" role="module" data-type="unsubscribe"
   style="color:#444444;font-size:12px;line-height:20px;padding:16px 16px 16px 16px;text-align:center">
   <div class="Unsubscribe--addressLine">
-    <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Publishing Corporation</p>
+    <p class="Unsubscribe--senderName" style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">Hindawi Limited</p>
     <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">
-      <span class="Unsubscribe--senderAddress">315 Madison Ave, Third Floor, Suite 3070</span>,
-      <span class="Unsubscribe--senderCity">NEW YORK</span>,
-      <span class="Unsubscribe--senderState">NY</span>
-      <span class="Unsubscribe--senderZip">10017</span>
+      <span class="Unsubscribe--senderAddress">3rd Floor, Adam House, 1 Fitzroy Square</span>,
+      <span class="Unsubscribe--senderCity">LONDON</span>,
+      <span class="Unsubscribe--senderState">United Kingdom</span>
+      <span class="Unsubscribe--senderZip">W1T 5HF</span>
     </p>
   </div>
   <p style="font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:20px">
diff --git a/packages/component-invite/src/routes/collectionsInvitations/emails/helpers.js b/packages/component-invite/src/routes/collectionsInvitations/emails/helpers.js
index 7b788cf69..eb67aa423 100644
--- a/packages/component-invite/src/routes/collectionsInvitations/emails/helpers.js
+++ b/packages/component-invite/src/routes/collectionsInvitations/emails/helpers.js
@@ -4,6 +4,7 @@ const { services } = require('pubsweet-component-helper-service')
 const { getEmailCopy } = require('./emailCopy')
 
 const unsubscribeSlug = config.get('unsubscribe.url')
+const { name: journalName, staffEmail } = config.get('journal')
 
 module.exports = {
   sendInvitedHEEmail: ({
@@ -23,6 +24,7 @@ module.exports = {
       ? `${customId}: Editor invitation cancelled`
       : `${customId}: Invitation to edit a manuscript`
 
+    email.fromEmail = `${journalName} <${staffEmail}>`
     email.content.unsubscribeLink = services.createUrl(
       baseUrl,
       unsubscribeSlug,
diff --git a/packages/component-invite/src/routes/collectionsInvitations/emails/notifications.js b/packages/component-invite/src/routes/collectionsInvitations/emails/notifications.js
index 3d19bde22..c018cdefe 100644
--- a/packages/component-invite/src/routes/collectionsInvitations/emails/notifications.js
+++ b/packages/component-invite/src/routes/collectionsInvitations/emails/notifications.js
@@ -7,7 +7,7 @@ const {
   Fragment,
 } = require('pubsweet-component-helper-service')
 
-const { helpers } = require('./helpers')
+const { sendInvitedHEEmail, sendEiCEmail } = require('./helpers')
 
 module.exports = {
   async sendNotifications({
@@ -52,7 +52,7 @@ module.exports = {
     })
 
     if (isEiC) {
-      helpers.sendInvitedHEEmail({
+      sendInvitedHEEmail({
         email,
         baseUrl,
         eicName,
@@ -62,7 +62,7 @@ module.exports = {
         handlingEditor: invitedHE,
       })
     } else {
-      helpers.sendEiCEmail({
+      sendEiCEmail({
         eic,
         email,
         baseUrl,
diff --git a/packages/component-manuscript-manager/src/routes/fragments/notifications/emailCopy.js b/packages/component-manuscript-manager/src/routes/fragments/notifications/emailCopy.js
index f6c08ecae..b48925f98 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/notifications/emailCopy.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/notifications/emailCopy.js
@@ -25,16 +25,16 @@ const getEmailCopy = ({ emailType, titleText, expectedDate, customId }) => {
       paragraph = `Manuscript ID ${customId} has been submitted and a package has been sent. Please click on the link below to either approve or reject the manuscript:`
       break
     case 'coauthors-manuscript-submitted':
-      paragraph = `${titleText}<br/>
-        To confirm the submission and view the status of the manuscript, please verify your details by clicking the link below.<br/>
-        Thank you for submitting your work to ${journalName}. <br/>
+      paragraph = `${titleText}.<br/><br/>
+        To confirm the submission and view the status of the manuscript, please verify your details by clicking the link below.<br/><br/>
+        Thank you for submitting your work to ${journalName}.
       `
       break
     case 'submitting-author-manuscript-submitted':
-      paragraph = `Congratulations, ${titleText} has been successfully submitted to ${journalName}.<br/>
+      paragraph = `Congratulations, ${titleText} has been successfully submitted to ${journalName}.<br/><br/>
         We will confirm this submission with all authors of the manuscript, but you will be the primary recipient of communications from the journal.
-        As submitting author, you will be responsible for responding to editorial queries and making updates to the manuscript. <br/>
-        In order to view the status of the manuscript, please visit the manuscript details page.<br/>
+        As submitting author, you will be responsible for responding to editorial queries and making updates to the manuscript. <br/><br/>
+        In order to view the status of the manuscript, please visit the manuscript details page.<br/><br/>
         Thank you for submitting your work to ${journalName}.
       `
       break
diff --git a/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js b/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
index b656b8a0c..e021abc11 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
@@ -9,11 +9,10 @@ const {
 } = require('pubsweet-component-helper-service')
 
 const resetPath = config.get('invite-reset-password.url')
-const journalName = config.get('journal.name')
-const { getEmailCopy } = require('./emailCopy')
-
+const { name: journalName, staffEmail } = config.get('journal')
 const unsubscribeSlug = config.get('unsubscribe.url')
-const editorialAssistantEmail = config.get('journal.staffEmail')
+
+const { getEmailCopy } = require('./emailCopy')
 
 module.exports = {
   async sendNotifications({
@@ -37,14 +36,13 @@ module.exports = {
     })
 
     const { customId } = collection
-    const titleText = `the manuscript titled "${parsedFragment.title}" by ${
-      submittingAuthor.firstName
-    } ${submittingAuthor.lastName}`
 
     const email = new Email({
       type: 'user',
+      fromEmail: `${journalName} <${staffEmail}>`,
       content: {
         signatureName: '',
+        signatureJournal: journalName,
         ctaLink: services.createUrl(
           baseUrl,
           `/projects/${collection.id}/versions/${fragment.id}/details`,
@@ -87,11 +85,14 @@ module.exports = {
       sendAuthorsEmail({
         email,
         baseUrl,
-        titleText,
         UserModel,
         fragmentId: fragment.id,
         fragmentAuthors: authors,
         collectionId: collection.id,
+        title: parsedFragment.title,
+        submittingAuthorName: `${submittingAuthor.firstName} ${
+          submittingAuthor.lastName
+        }`,
       })
     }
   },
@@ -168,23 +169,17 @@ const sendReviewersEmail = async ({
   })
 }
 
-const sendEQSEmail = ({
-  email,
-  eicName,
-  baseUrl,
-  collection,
-  subjectBaseText,
-}) => {
+const sendEQSEmail = ({ email, eicName, baseUrl, collection }) => {
   const emailType = 'eqs-manuscript-submitted'
 
   email.toUser = {
-    email: editorialAssistantEmail,
+    email: staffEmail,
     name: 'Editorial Assistant',
   }
 
   email.content.unsubscribeLink = baseUrl
   email.content.signatureName = eicName
-  email.content.subject = `${subjectBaseText} Submitted`
+  email.content.subject = `Manuscript Submitted`
   email.content.ctaLink = services.createUrl(
     baseUrl,
     config.get('eqs-decision.url'),
@@ -209,14 +204,14 @@ const sendAuthorsEmail = async ({
   email,
   title,
   baseUrl,
-  customId,
   UserModel,
-  titleText,
   fragmentId,
   collectionId,
   fragmentAuthors,
+  submittingAuthorName,
 }) => {
   email.content.subject = `Manuscript submitted to ${journalName}`
+  email.content.signatureName = ''
 
   const userEmailData = await Promise.all(
     fragmentAuthors.map(async author => {
@@ -225,15 +220,12 @@ const sendAuthorsEmail = async ({
         ...author,
         isConfirmed: user.isConfirmed,
         ...getEmailCopy({
-          customId,
           emailType: author.isSubmitting
             ? 'submitting-author-manuscript-submitted'
             : 'coauthors-manuscript-submitted',
           titleText: author.isSubmitting
-            ? titleText
-            : `The manuscript titled "${title}" has been submitted to ${journalName} by ${
-                author.firstName
-              } ${author.lastName}`,
+            ? `the manuscript titled "${title}"`
+            : `The manuscript titled "${title}" has been submitted to ${journalName} by ${submittingAuthorName}`,
         }),
       }
     }),
@@ -277,6 +269,8 @@ const sendAuthorsEmail = async ({
       body: {
         paragraph: author.paragraph,
         hasLink: author.hasLink,
+        hasIntro: author.hasIntro,
+        hasSignature: author.hasSignature,
       },
     })
     email.sendEmail({ html, text })
diff --git a/packages/component-manuscript-manager/src/routes/technicalChecks/notifications/notifications.js b/packages/component-manuscript-manager/src/routes/technicalChecks/notifications/notifications.js
index e58ed24cd..a51cf5e2b 100644
--- a/packages/component-manuscript-manager/src/routes/technicalChecks/notifications/notifications.js
+++ b/packages/component-manuscript-manager/src/routes/technicalChecks/notifications/notifications.js
@@ -10,6 +10,7 @@ const {
 const { getEmailCopy } = require('./emailCopy')
 
 const unsubscribeSlug = config.get('unsubscribe.url')
+const { name: journalName, staffEmail } = config.get('journal')
 
 module.exports = {
   async sendNotifications({
@@ -46,6 +47,7 @@ module.exports = {
 
     const email = new Email({
       type: 'user',
+      fromEmail: `${journalName} <${staffEmail}>`,
       content: {
         subject,
         signatureName: 'EQA Team',
-- 
GitLab