From abeab643135773496c797865d13f09eff5b8b9a9 Mon Sep 17 00:00:00 2001
From: Sebastian Mihalache <sebi.mihalache@gmail.com>
Date: Fri, 9 Nov 2018 12:07:52 +0200
Subject: [PATCH] feat(mts-package): handled case for multiple versions

---
 .../src/services/Fragment.js                  |  7 ++--
 .../routes/fragmentsRecommendations/post.js   | 26 +++++++++------
 packages/component-mts-package/src/MTS.js     | 10 +-----
 .../src/PackageManager.js                     |  2 +-
 .../component-mts-package/tests/MTS.test.js   | 32 -------------------
 5 files changed, 22 insertions(+), 55 deletions(-)
 delete mode 100644 packages/component-mts-package/tests/MTS.test.js

diff --git a/packages/component-helper-service/src/services/Fragment.js b/packages/component-helper-service/src/services/Fragment.js
index 17fdd5939..5ed798f66 100644
--- a/packages/component-helper-service/src/services/Fragment.js
+++ b/packages/component-helper-service/src/services/Fragment.js
@@ -156,7 +156,7 @@ class Fragment {
       recommendations.map(async rec => {
         const user = await UserModel.find(rec.userId)
 
-        let assignmentDate, submissionDate, isReviewer
+        let assignmentDate, isReviewer
 
         if (rec.recommendationType === confRecommendations.type.editor) {
           if (user.id === collection.handlingEditor.id) {
@@ -174,19 +174,20 @@ class Fragment {
             inv => inv.userId === user.id,
           )
           assignmentDate = reviewerInvitation.respondedOn
-          submissionDate = rec.createdOn
           isReviewer = true
         }
 
         return {
           isReviewer,
-          submissionDate,
           assignmentDate,
           email: user.email,
           title: user.title,
           recommendation: rec,
+          country: user.country,
           lastName: user.lastName,
           firstName: user.firstName,
+          submissionDate: rec.createdOn,
+          affiliation: user.affiliation,
         }
       }),
     )
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 80fc1588c..55722ea66 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -94,16 +94,22 @@ module.exports = models => async (req, res) => {
     // the manuscript has not yet passed through the EQA process so we need to upload it to the FTP server
     if (isEditorInChief && recommendation === 'publish' && !hasEQA) {
       if (features.mts) {
-        const fragmentUsers = await fragmentHelper.getReviewersAndEditorsData({
-          collection,
-          UserModel: models.User,
-        })
-
-        await sendMTSPackage({
-          collection,
-          fragment,
-          isEQA: true,
-          fragmentUsers,
+        collection.fragments.forEach(async fragmentId => {
+          const fragment = await models.Fragment.find(fragmentId)
+          fragmentHelper.fragment = fragment
+          const fragmentUsers = await fragmentHelper.getReviewersAndEditorsData(
+            {
+              collection,
+              UserModel: models.User,
+            },
+          )
+
+          await sendMTSPackage({
+            collection,
+            fragment,
+            isEQA: true,
+            fragmentUsers,
+          })
         })
       }
 
diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js
index 619921805..3f9e503df 100644
--- a/packages/component-mts-package/src/MTS.js
+++ b/packages/component-mts-package/src/MTS.js
@@ -41,7 +41,7 @@ module.exports = {
     }).then(() => {
       const packageName = get(xmlFile, 'name', '').replace('.xml', '')
       const filename = isEQA
-        ? `ACCEPTED_${packageName}.zip`
+        ? `ACCEPTED_${packageName}.${fragment.version}.zip`
         : `${packageName}.zip`
 
       return PackageManager.uploadFiles({
@@ -52,11 +52,3 @@ module.exports = {
     })
   },
 }
-
-// const convertSample = filePath => {
-//   const fs = require('fs')
-//   const xml = fs.readFileSync(filePath, 'utf8')
-//   const result = convert.xml2js(xml, this.options)
-//   const newFile = filePath.replace('.xml', '.json')
-//   return fs.writeFile(newFile, JSON.stringify(result))
-// }
diff --git a/packages/component-mts-package/src/PackageManager.js b/packages/component-mts-package/src/PackageManager.js
index cb9b8ea4c..367567b1c 100644
--- a/packages/component-mts-package/src/PackageManager.js
+++ b/packages/component-mts-package/src/PackageManager.js
@@ -22,7 +22,7 @@ const createFilesPackage = (s3Config, archiver = nodeArchiver) => {
     const { files = {} } = fragment
     let packageName = get(xmlFile, 'name', '').replace('.xml', '')
     if (isEQA) {
-      packageName = `ACCEPTED_${packageName}`
+      packageName = `ACCEPTED_${packageName}.${fragment.version}`
     }
     try {
       const s3FileIDs = Object.values(files)
diff --git a/packages/component-mts-package/tests/MTS.test.js b/packages/component-mts-package/tests/MTS.test.js
deleted file mode 100644
index a369322a8..000000000
--- a/packages/component-mts-package/tests/MTS.test.js
+++ /dev/null
@@ -1,32 +0,0 @@
-process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
-process.env.SUPPRESS_NO_CONFIG_WARNING = true
-
-// const MTSService = require('../src/MTS')
-// const mocks = require('./mocks')
-
-jest.mock('xml-js', () => ({
-  json2xml: jest.fn(),
-  xml2js: jest.fn(),
-}))
-
-describe('MTS integration', () => {
-  // let MTS
-  // beforeEach(() => {
-  //   MTS = new MTSService(mocks.config.defaultConfig)
-  // })
-  // it('should be instantiated', () => {
-  //   const result = MTS
-  //   expect(result).toBeDefined()
-  // })
-  // it('should return basic json for XML parsing', () => {
-  //   const result = MTS.composeJson({})
-  //   expect(result).toHaveProperty('article')
-  // })
-  // it('should contain configured journal name ', () => {
-  //   const result = MTS.composeJson({ fragment: mocks.fragment })
-  //   expect(result).toHaveProperty(
-  //     'article.front.journal-meta.journal-title-group.journal-title._text',
-  //     'Bioinorganic Chemistry and Applications',
-  //   )
-  // })
-})
-- 
GitLab