From 671f6a3a34dfd2b8d4f3091b565164373bb928c9 Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebastian.mihalache@gmail.con> Date: Wed, 30 May 2018 13:52:55 +0300 Subject: [PATCH] feat(component-manuscript-manager): update status after EiC reject --- .../config/test.js | 8 +++++++ .../src/FragmentsRecommendations.js | 12 +++++----- .../src/helpers/Collection.js | 24 +++++++++++++++++++ .../routes/fragmentsRecommendations/post.js | 6 +++++ packages/xpub-faraday/config/authsome-mode.js | 5 ++++ 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/packages/component-manuscript-manager/config/test.js b/packages/component-manuscript-manager/config/test.js index 05b1d5944..6869d659a 100644 --- a/packages/component-manuscript-manager/config/test.js +++ b/packages/component-manuscript-manager/config/test.js @@ -59,6 +59,14 @@ module.exports = { public: 'Under Review', private: 'Pending Approval', }, + rejected: { + public: 'Rejected', + private: 'Rejected', + }, + published: { + public: 'Published', + private: 'Published', + }, }, 'manuscript-types': { research: 'Research', diff --git a/packages/component-manuscript-manager/src/FragmentsRecommendations.js b/packages/component-manuscript-manager/src/FragmentsRecommendations.js index 681be174d..2c5d64711 100644 --- a/packages/component-manuscript-manager/src/FragmentsRecommendations.js +++ b/packages/component-manuscript-manager/src/FragmentsRecommendations.js @@ -15,7 +15,7 @@ const FragmentsRecommendations = app => { * @apiParam {fragmentId} fragmentId Fragment id * @apiParamExample {json} Body * { - * "recommendation": "accept", [acceptedValues: accept, revise, etc.], + * "recommendation": "publish", [acceptedValues: publish, reject, minor, major], * "comments": * [ * { @@ -40,7 +40,7 @@ const FragmentsRecommendations = app => { * "userId": "4c3f8ee1-785b-4adb-87b4-407a27f652c6", * "createdOn": 1525428890167, * "updatedOn": 1525428890167, - * "recommendation": "accept", [acceptedValues: accept, revise, etc.], + * "recommendation": "publish", * "comments": * [ * { @@ -56,7 +56,7 @@ const FragmentsRecommendations = app => { * ] * } * ], - * "recommendationType": "review" [acceptedValues: review, editorRecommendation] + * "recommendationType": "review" * } * @apiErrorExample {json} Invite user errors * HTTP/1.1 403 Forbidden @@ -70,14 +70,14 @@ const FragmentsRecommendations = app => { require(`${routePath}/post`)(app.locals.models), ) /** - * @api {patch} /api/collections/:collectionId/fragments/:fragmentId/recommendations/:recommendationId Create a recommendation on a fragment + * @api {patch} /api/collections/:collectionId/fragments/:fragmentId/recommendations/:recommendationId Modify a recommendation on a fragment * @apiGroup FragmentsRecommendations * @apiParam {collectionId} collectionId Collection id * @apiParam {fragmentId} fragmentId Fragment id * @apiParam {recommendationId} recommendationId Recommendation id * @apiParamExample {json} Body * { - * "recommendation": "accept", [acceptedValues: accept, revise, etc.], + * "recommendation": "publish", [acceptedValues: publish, reject, minor, major], * "comments": * [ * { @@ -102,7 +102,7 @@ const FragmentsRecommendations = app => { * "userId": "4c3f8ee1-785b-4adb-87b4-407a27f652c6", * "createdOn": 1525428890167, * "updatedOn": 1525428890167, - * "recommendation": "accept", [acceptedValues: accept, revise, etc.], + * "recommendation": "publish", * "comments": * [ * { diff --git a/packages/component-manuscript-manager/src/helpers/Collection.js b/packages/component-manuscript-manager/src/helpers/Collection.js index b3897a93f..85a056a5c 100644 --- a/packages/component-manuscript-manager/src/helpers/Collection.js +++ b/packages/component-manuscript-manager/src/helpers/Collection.js @@ -12,6 +12,29 @@ const updateStatusByRecommendation = async (collection, recommendation) => { await collection.save() } +const updateFinalStatusByRecommendation = async ( + collection, + recommendation, +) => { + let newStatus + switch (recommendation) { + case 'reject': + newStatus = 'rejected' + break + case 'publish': + newStatus = 'published' + break + case 'return-to-handling-editor': + newStatus = 'reviewCompleted' + break + default: + break + } + collection.status = newStatus + collection.visibleStatus = statuses[collection.status].private + await collection.save() +} + const updateStatus = async (collection, newStatus) => { collection.status = newStatus collection.visibleStatus = statuses[collection.status].private @@ -55,4 +78,5 @@ module.exports = { getFragmentAndAuthorData, getAgreedReviewerInvitation, updateStatus, + updateFinalStatusByRecommendation, } diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 3e44b62e5..592c6cea7 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -54,6 +54,12 @@ module.exports = models => async (req, res) => { newRecommendation.comments = comments || undefined if (recommendationType === 'editorRecommendation') { + if (reqUser.editorInChief === true) { + await collectionHelper.updateFinalStatusByRecommendation( + collection, + recommendation, + ) + } await collectionHelper.updateStatusByRecommendation( collection, recommendation, diff --git a/packages/xpub-faraday/config/authsome-mode.js b/packages/xpub-faraday/config/authsome-mode.js index fbbea3d6a..88f4b83d3 100644 --- a/packages/xpub-faraday/config/authsome-mode.js +++ b/packages/xpub-faraday/config/authsome-mode.js @@ -14,6 +14,11 @@ async function teamPermissions(user, operation, object, context) { let collectionsPermissions = await Promise.all( teams.map(async team => { const collection = await context.models.Collection.find(team.object.id) + if ( + collection.status === 'rejected' && + team.teamType.permissions === 'reviewer' + ) + return null const collPerm = { id: collection.id, permission: team.teamType.permissions, -- GitLab