From 6f18bd262a51ec0004c464a4a1a27e23b62afd6b Mon Sep 17 00:00:00 2001
From: Mihail Hagiu <mihail.hagiu@thinslices.com>
Date: Thu, 15 Nov 2018 18:20:57 +0200
Subject: [PATCH] refactor(ReviewerNumbering): Reviewer numbers now assigned on
 submit instead of autosave

---
 .../src/services/Collection.js                  |  4 ++--
 .../src/tests/collection.test.js                |  8 ++++----
 .../routes/fragmentsRecommendations/patch.js    | 17 +++++++++++++++++
 .../src/routes/fragmentsRecommendations/post.js | 14 +-------------
 4 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/packages/component-helper-service/src/services/Collection.js b/packages/component-helper-service/src/services/Collection.js
index 5bfe4ca8e..f68f5efc7 100644
--- a/packages/component-helper-service/src/services/Collection.js
+++ b/packages/component-helper-service/src/services/Collection.js
@@ -116,7 +116,7 @@ class Collection {
     return allCollectionFragments
   }
 
-  async getReviewerNumber({ reqUser, FragmentModel }) {
+  async getReviewerNumber({ userId, FragmentModel }) {
     const allCollectionFragments = await this.getAllCollectionFragments({
       FragmentModel,
     })
@@ -124,7 +124,7 @@ class Collection {
       allCollectionFragments.map(fragment => fragment.invitations),
     )
     const allNumberedInvitationsForUser = allCollectionInvitations
-      .filter(invite => invite.userId === reqUser.id)
+      .filter(invite => invite.userId === userId)
       .filter(invite => invite.reviewerNumber)
 
     if (isEmpty(allNumberedInvitationsForUser)) {
diff --git a/packages/component-helper-service/src/tests/collection.test.js b/packages/component-helper-service/src/tests/collection.test.js
index fb921025d..30315ad22 100644
--- a/packages/component-helper-service/src/tests/collection.test.js
+++ b/packages/component-helper-service/src/tests/collection.test.js
@@ -56,7 +56,7 @@ describe('Collection helper', () => {
       const FragmentModel = models.Fragment
 
       const reviewerNumber = await collectionHelper.getReviewerNumber({
-        reqUser: reviewer,
+        userId: reviewer.id,
         FragmentModel,
       })
 
@@ -71,7 +71,7 @@ describe('Collection helper', () => {
       const FragmentModel = models.Fragment
 
       const reviewerNumber = await collectionHelper.getReviewerNumber({
-        reqUser: reviewer,
+        userId: reviewer.id,
         FragmentModel,
       })
 
@@ -86,7 +86,7 @@ describe('Collection helper', () => {
       const FragmentModel = models.Fragment
 
       const reviewerNumber = await collectionHelper.getReviewerNumber({
-        reqUser: answerReviewer,
+        userId: answerReviewer.id,
         FragmentModel,
       })
 
@@ -101,7 +101,7 @@ describe('Collection helper', () => {
       const FragmentModel = models.Fragment
 
       const reviewerNumber = await collectionHelper.getReviewerNumber({
-        reqUser: reviewer,
+        userId: reviewer.id,
         FragmentModel,
       })
 
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js
index 7846722ed..7e1e10feb 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/patch.js
@@ -1,3 +1,4 @@
+const { findIndex } = require('lodash')
 const {
   services,
   authsome: authsomeHelper,
@@ -64,6 +65,22 @@ module.exports = models => async (req, res) => {
       }
     }
 
+    if (req.body.submittedOn) {
+      const collectionHelper = new Collection({ collection })
+      const invitationIndex = findIndex(fragment.invitations, [
+        'userId',
+        req.authInfo.id,
+      ])
+      if (invitationIndex >= 0) {
+        const FragmentModel = models.Fragment
+        const reviewerNumber = await collectionHelper.getReviewerNumber({
+          userId: req.authInfo.id,
+          FragmentModel,
+        })
+        fragment.invitations[invitationIndex].reviewerNumber = reviewerNumber
+      }
+    }
+
     fragment.save()
 
     return res.status(200).json(recommendation)
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 922f7c700..c5c0da1b4 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -1,5 +1,5 @@
 const uuid = require('uuid')
-const { pick, get, set, has, isEmpty, last, findIndex } = require('lodash')
+const { pick, get, set, has, isEmpty, last } = require('lodash')
 const config = require('config')
 const { v4 } = require('uuid')
 
@@ -197,18 +197,6 @@ module.exports = models => async (req, res) => {
     }
   }
 
-  const invitationIndex = findIndex(fragment.invitations, [
-    'userId',
-    reqUser.id,
-  ])
-  if (invitationIndex >= 0) {
-    const FragmentModel = models.Fragment
-    const reviewerNumber = await collectionHelper.getReviewerNumber({
-      reqUser,
-      FragmentModel,
-    })
-    fragment.invitations[invitationIndex].reviewerNumber = reviewerNumber
-  }
   fragment.recommendations.push(newRecommendation)
   fragment.save()
 
-- 
GitLab