From 2e663733602e8653b814a00606e0d7d29ce15458 Mon Sep 17 00:00:00 2001
From: Sebastian <sebastian.mihalache@thinslices.com>
Date: Wed, 11 Apr 2018 12:59:46 +0300
Subject: [PATCH] feat(component-invite): fix get invitations

---
 .../component-invite/src/CollectionsInvitations.js   |  7 +++++--
 packages/component-invite/src/helpers/Invitation.js  |  4 ++--
 .../src/routes/collectionsInvitations/get.js         | 12 +++++++-----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/packages/component-invite/src/CollectionsInvitations.js b/packages/component-invite/src/CollectionsInvitations.js
index 3dcd2cd58..b486ddbfa 100644
--- a/packages/component-invite/src/CollectionsInvitations.js
+++ b/packages/component-invite/src/CollectionsInvitations.js
@@ -46,9 +46,11 @@ const CollectionsInvitations = app => {
     require(`${routePath}/post`)(app.locals.models),
   )
   /**
-   * @api {get} /api/collections/:collectionId/invitations List collections invitations
+   * @api {get} /api/collections/:collectionId/invitations/{:invitationId}?role=:role List collections invitations
    * @apiGroup CollectionsInvitations
-   * @apiParam {collectionId} id Collection id
+   * @apiParam {id} collectionId Collection id
+   * @apiParam {id} [invitationId] Invitation id
+   * @apiParam {String} role The role to search for: handlingEditor, reviewer, author
    * @apiSuccessExample {json} Success
    *    HTTP/1.1 200 OK
    *    [{
@@ -56,6 +58,7 @@ const CollectionsInvitations = app => {
    *      "timestamp": "123223121",
    *      "email": "email@example.com",
    *      "status": "pending",
+   *      "invitationId": "1990881"
    *    }]
    * @apiErrorExample {json} List errors
    *    HTTP/1.1 403 Forbidden
diff --git a/packages/component-invite/src/helpers/Invitation.js b/packages/component-invite/src/helpers/Invitation.js
index db8de768b..5d6897ebf 100644
--- a/packages/component-invite/src/helpers/Invitation.js
+++ b/packages/component-invite/src/helpers/Invitation.js
@@ -11,8 +11,8 @@ const getInvitationData = (invitations, userId, role) => {
     status = 'refused'
   }
 
-  const { timestamp } = matchingInvitation
-  return { timestamp, status }
+  const { timestamp, id } = matchingInvitation
+  return { timestamp, status, id }
 }
 
 const setupInvitation = async (userId, role, collection) => {
diff --git a/packages/component-invite/src/routes/collectionsInvitations/get.js b/packages/component-invite/src/routes/collectionsInvitations/get.js
index 5650c6ef1..4dd66e7d5 100644
--- a/packages/component-invite/src/routes/collectionsInvitations/get.js
+++ b/packages/component-invite/src/routes/collectionsInvitations/get.js
@@ -5,10 +5,10 @@ const inviteHelper = require('../../helpers/Invitation')
 
 const configRoles = config.get('roles')
 module.exports = models => async (req, res) => {
-  const { userId, role } = req.query
+  const { role } = req.query
   // TO DO: authsome
-  if (!helpers.checkForUndefinedParams(userId, role)) {
-    res.status(400).json({ error: 'User ID and Role are required' })
+  if (!helpers.checkForUndefinedParams(role)) {
+    res.status(400).json({ error: 'Role is required' })
     return
   }
 
@@ -32,11 +32,12 @@ module.exports = models => async (req, res) => {
       return
     }
 
+    // TO DO: handle case for when the invitationID is provided
     const membersData = members.map(async member => {
       const user = await models.User.find(member)
-      const { timestamp, status } = inviteHelper.getInvitationData(
+      const { timestamp, status, id } = inviteHelper.getInvitationData(
         collection.invitations,
-        userId,
+        user.id,
         role,
       )
       return {
@@ -44,6 +45,7 @@ module.exports = models => async (req, res) => {
         timestamp,
         email: user.email,
         status,
+        invitationId: id,
       }
     })
 
-- 
GitLab