diff --git a/src/controllers/GroupMembershipController.js b/src/controllers/GroupMembershipController.js index 62d505e..e888097 100644 --- a/src/controllers/GroupMembershipController.js +++ b/src/controllers/GroupMembershipController.js @@ -93,6 +93,17 @@ async function getMemberGroups (req, res) { res.send(result) } +/** +* Group Validity Check for Member +* @param {*} req +* @param {*} res +*/ +async function groupValidityCheck(req, res) { + const result = await service.groupValidityCheck(req.params.memberId, req.params.groupId) + res.send(result) +} + + module.exports = { getGroupMembers, addGroupMember, @@ -100,5 +111,6 @@ module.exports = { deleteGroupMember, getGroupMembersCount, listGroupsMemberCount, - getMemberGroups + getMemberGroups, + groupValidityCheck } diff --git a/src/routes.js b/src/routes.js index 911f730..504fca8 100644 --- a/src/routes.js +++ b/src/routes.js @@ -104,6 +104,12 @@ module.exports = { method: 'getGroupMembersCount' } }, + '/groups/validityCheck/:memberId/:groupId': { + get: { + controller: 'GroupMembershipController', + method: 'groupValidityCheck' + } + }, '/groups/:groupId/subGroup': { post: { controller: 'SubGroupController', diff --git a/src/services/GroupMembershipService.js b/src/services/GroupMembershipService.js index b66d2c8..da10aab 100644 --- a/src/services/GroupMembershipService.js +++ b/src/services/GroupMembershipService.js @@ -561,6 +561,30 @@ getMemberGroups.schema = { memberId: Joi.id() } +async function groupValidityCheck(memberId, groupId) { + const session = helper.createDBSession() + try { + const res = await session.run( + `MATCH (g:Group)-[r:GroupContains*1..]->(o {id: "${memberId}"}) WHERE exists(g.oldId) AND g.status = '$constants.GroupStatus.Active}' RETURN g.oldId order by g.oldId` + ) + + const validOrNot = _.includes(_.uniq(_.map(res.records, (record) => record.get(0))), groupId) + + return {"check": validOrNot} + } catch (error) { + logger.error(error) + throw error + } finally { + logger.debug('Session Close') + await session.close() + } +} + +groupValidityCheck.schema = { + memberId: Joi.id(), + groupId: Joi.id() +} + module.exports = { getGroupMembers, addGroupMember, @@ -568,7 +592,8 @@ module.exports = { deleteGroupMember, getGroupMembersCount, listGroupsMemberCount, - getMemberGroups + getMemberGroups, + groupValidityCheck } logger.buildService(module.exports)