From 0160e0a3d0aa34f1662a1188bfb35a55513f8e10 Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Thu, 25 Jan 2024 19:25:17 +0530 Subject: [PATCH 1/7] Org-extension should be created during org-creation and not when it is required for the first time. Katha #2421 --- src/constants/common.js | 2 ++ src/constants/eventEndpoints.js | 7 +++++++ src/services/organization.js | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/src/constants/common.js b/src/constants/common.js index 4a5981e76..888d07536 100644 --- a/src/constants/common.js +++ b/src/constants/common.js @@ -121,4 +121,6 @@ module.exports = { materializedViewsPrefix: 'm_', DELETED_STATUS: 'DELETED', DEFAULT_ORG_VISIBILITY: 'PUBLIC', + MENTOR_QUESTIONSET: 'MENTOR_QS2', + MENTEE_QUESTIONSET: 'MENTEE_QS1', } diff --git a/src/constants/eventEndpoints.js b/src/constants/eventEndpoints.js index 366840630..37f38acd6 100644 --- a/src/constants/eventEndpoints.js +++ b/src/constants/eventEndpoints.js @@ -35,5 +35,12 @@ module.exports = { route: '/mentoring/v1/sessions/bulkUpdateMentorNames', }, ], + orgExtension: [ + { + method: 'POST', + baseUrl: `${process.env.MENTORING_SERVICE_URL}`, + route: '/mentoring/v1/organization/create', + }, + ], }, } diff --git a/src/services/organization.js b/src/services/organization.js index 59e98d544..8b75ec04d 100644 --- a/src/services/organization.js +++ b/src/services/organization.js @@ -123,6 +123,15 @@ module.exports = class OrganizationsHelper { const cacheKey = common.redisOrgPrefix + createdOrganization.id.toString() await utils.internalDel(cacheKey) + await eventBroadcaster('orgExtension', { + requestBody: { + mentee_feedback_question_set: common.MENTEE_QUESTIONSET, + mentor_feedback_question_set: common.MENTOR_QUESTIONSET, + organization_id: createdOrganization.id, + user_id: loggedInUserId, + }, + }) + return common.successResponse({ statusCode: httpStatusCode.created, message: 'ORGANIZATION_CREATED_SUCCESSFULLY', From 4aa06bc2f4c014fad8e8576d24d7a3543a7f8d3e Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Thu, 1 Feb 2024 14:33:36 +0530 Subject: [PATCH 2/7] reverted changes of event listeners --- src/constants/common.js | 2 -- src/constants/eventEndpoints.js | 7 ------- src/services/organization.js | 2 +- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/constants/common.js b/src/constants/common.js index 35a8ab928..8834f6925 100644 --- a/src/constants/common.js +++ b/src/constants/common.js @@ -94,6 +94,4 @@ module.exports = { DELETED_STATUS: 'DELETED', DEFAULT_ORG_VISIBILITY: 'PUBLIC', ROLE_TYPE_NON_SYSTEM: 0, - MENTOR_QUESTIONSET: 'MENTOR_QS2', - MENTEE_QUESTIONSET: 'MENTEE_QS1', } diff --git a/src/constants/eventEndpoints.js b/src/constants/eventEndpoints.js index 37f38acd6..366840630 100644 --- a/src/constants/eventEndpoints.js +++ b/src/constants/eventEndpoints.js @@ -35,12 +35,5 @@ module.exports = { route: '/mentoring/v1/sessions/bulkUpdateMentorNames', }, ], - orgExtension: [ - { - method: 'POST', - baseUrl: `${process.env.MENTORING_SERVICE_URL}`, - route: '/mentoring/v1/organization/create', - }, - ], }, } diff --git a/src/services/organization.js b/src/services/organization.js index 3ed3860fc..c8a10ad7f 100644 --- a/src/services/organization.js +++ b/src/services/organization.js @@ -124,7 +124,7 @@ module.exports = class OrganizationsHelper { const cacheKey = common.redisOrgPrefix + createdOrganization.id.toString() await utils.internalDel(cacheKey) - return common.successResponse({ + return responses.successResponse({ statusCode: httpStatusCode.created, message: 'ORGANIZATION_CREATED_SUCCESSFULLY', result: createdOrganization, From eec3c76b6d7227e4e258af6af62a669e068b420d Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Thu, 1 Feb 2024 16:57:43 +0530 Subject: [PATCH 3/7] event listener code changes --- src/services/admin.js | 19 +++++++++++++++++++ src/services/user.js | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/services/admin.js b/src/services/admin.js index e3343f92d..c20c6d36c 100644 --- a/src/services/admin.js +++ b/src/services/admin.js @@ -15,6 +15,7 @@ const userQueries = require('@database/queries/users') const roleQueries = require('@database/queries/userRole') const organizationQueries = require('@database/queries/organization') const { eventBroadcaster } = require('@helpers/eventBroadcaster') +const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') const adminService = require('../generics/materializedViews') @@ -357,6 +358,24 @@ module.exports = class AdminHelper { }, }) + eventBroadcasterMain('updateOrganization'), + { + entity: 'organization', + eventType: 'update', + entityId: userId, + changes: { + organization_id: { + oldValue: '', + newValue: currentName, + }, + roles: { + oldValue: [], + newValue: _.map(roleData, 'title'), + }, + }, + updatedAt: currentDate.toISOString(), + } + const result = { user_id: userId, organization_id: organizationId, diff --git a/src/services/user.js b/src/services/user.js index a141f7bad..01fed3361 100644 --- a/src/services/user.js +++ b/src/services/user.js @@ -18,8 +18,10 @@ const { removeDefaultOrgEntityTypes } = require('@generics/utils') const _ = require('lodash') const { Op } = require('sequelize') const { eventBroadcaster } = require('@helpers/eventBroadcaster') +const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') const emailEncryption = require('@utils/emailEncryption') const responses = require('@helpers/responses') +const helper = require('csvtojson') module.exports = class UserHelper { /** @@ -103,6 +105,22 @@ module.exports = class UserHelper { mentor_id: id, }, }) + // fetch current date for updatedAt + const currentDate = new Date() + + eventBroadcasterMain('updateName'), + { + entity: 'user', + eventType: 'update', + entityId: id, + changes: { + mentor_name: { + oldValue: previousName, + newValue: currentName, + }, + }, + updatedAt: currentDate.toISOString(), + } } const redisUserKey = common.redisUserPrefix + id.toString() if (await utils.redisGet(redisUserKey)) { From 38ef41e2c35c79dc39625b5705be6da9610465a0 Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Mon, 5 Feb 2024 13:37:05 +0530 Subject: [PATCH 4/7] Task to change current event workflow to proposed format --- src/helpers/eventBroadcasterMain.js | 13 ++++++ src/services/admin.js | 71 ++++++++++++++++------------- src/services/org-admin.js | 34 ++++++++++---- src/services/organization.js | 19 ++++++-- src/services/user.js | 6 --- src/services/userInvite.js | 47 ++++++++++++++++--- 6 files changed, 133 insertions(+), 57 deletions(-) diff --git a/src/helpers/eventBroadcasterMain.js b/src/helpers/eventBroadcasterMain.js index 068be4347..fb5f2ff57 100644 --- a/src/helpers/eventBroadcasterMain.js +++ b/src/helpers/eventBroadcasterMain.js @@ -7,6 +7,14 @@ const getEndpoints = (eventGroup) => { if (process.env.EVENT_ORG_LISTENER_URLS) return process.env.EVENT_ORG_LISTENER_URLS.split(',').filter((url) => url.trim()) return [] + case 'orgAdminEvents': + if (process.env.EVENT_ORG_LISTENER_URLS) + return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) + return [] + case 'deactivateUpcomingSession': + if (process.env.EVENT_ORG_LISTENER_URLS) + return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) + return [] default: return [] } @@ -16,6 +24,11 @@ const isEventEnabled = (eventGroup) => { switch (eventGroup) { case 'organizationEvents': return process.env.EVENT_ENABLE_ORG_EVENTS !== 'false' + case 'orgAdminEvents': + return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' + case 'deactivateUpcomingSession': + return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' + default: return true } diff --git a/src/services/admin.js b/src/services/admin.js index c20c6d36c..b6eac39e5 100644 --- a/src/services/admin.js +++ b/src/services/admin.js @@ -16,6 +16,7 @@ const roleQueries = require('@database/queries/userRole') const organizationQueries = require('@database/queries/organization') const { eventBroadcaster } = require('@helpers/eventBroadcaster') const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') +const { eventBodyDTO } = require('@dtos/eventBody') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') const adminService = require('../generics/materializedViews') @@ -349,32 +350,28 @@ module.exports = class AdminHelper { } ) - // update organization in mentoring - eventBroadcaster('updateOrganization', { - requestBody: { - user_id: userId, - organization_id: organizationId, - roles: _.map(roleData, 'title'), + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'organization', + eventType: 'update', + entityId: userId, + changedValues: [ + { + fieldName: 'organization_id', + oldValue: '', + newValue: organizationId, + }, + { + fieldName: 'roles', + oldValue: '', + newValue: _.map(roleData, 'title'), + }, + ], + args: { + updated_at: currentDate.toISOString(), }, }) - - eventBroadcasterMain('updateOrganization'), - { - entity: 'organization', - eventType: 'update', - entityId: userId, - changes: { - organization_id: { - oldValue: '', - newValue: currentName, - }, - roles: { - oldValue: [], - newValue: _.map(roleData, 'title'), - }, - }, - updatedAt: currentDate.toISOString(), - } + await eventBroadcasterMain('orgAdminEvents', { requestBody: eventBody, isInternal: true }) const result = { user_id: userId, @@ -443,11 +440,18 @@ module.exports = class AdminHelper { ) const userIds = _.map(users, 'id') - eventBroadcaster('deactivateUpcomingSession', { - requestBody: { - user_ids: userIds, + + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'sessions', + eventType: 'update', + entityId: userIds, + changedValues: [], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, @@ -509,12 +513,17 @@ module.exports = class AdminHelper { }) } - //check and deactivate upcoming sessions - eventBroadcaster('deactivateUpcomingSession', { - requestBody: { - user_ids: userIds, + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'sessions', + eventType: 'update', + entityId: userIds, + changedValues: [], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, diff --git a/src/services/org-admin.js b/src/services/org-admin.js index b1158b077..320cb1502 100644 --- a/src/services/org-admin.js +++ b/src/services/org-admin.js @@ -20,6 +20,7 @@ const entityTypeQueries = require('@database/queries/entityType') const organizationQueries = require('@database/queries/organization') const notificationTemplateQueries = require('@database/queries/notificationTemplate') const { eventBroadcaster } = require('@helpers/eventBroadcaster') +const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') const { Queue } = require('bullmq') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') @@ -336,12 +337,17 @@ module.exports = class OrgAdminHelper { }) } - //check and deactivate upcoming sessions - eventBroadcaster('deactivateUpcomingSession', { - requestBody: { - user_ids: userIds, + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'sessions', + eventType: 'update', + entityId: userIds, + changedValues: [], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, @@ -431,13 +437,23 @@ function updateRoleForApprovedRequest(requestDetails, user) { { attributes: ['title', 'id', 'user_type', 'status'] } ) - eventBroadcaster('roleChange', { - requestBody: { - user_id: requestDetails.requester_id, - new_roles: [newRole.title], - current_roles: _.map(userRoles, 'title'), + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'userRoles', + eventType: 'update', + entityId: requestDetails.requester_id, + changedValues: [ + { + fieldName: 'roles', + oldValue: _.map(userRoles, 'title'), + newValue: [newRole.title], + }, + ], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('roleChange', { requestBody: eventBody, isInternal: true }) let rolesToUpdate = [requestDetails.role] diff --git a/src/services/organization.js b/src/services/organization.js index a27ae33e6..16e78abd1 100644 --- a/src/services/organization.js +++ b/src/services/organization.js @@ -186,12 +186,23 @@ module.exports = class OrganizationsHelper { raw: true, }) - eventBroadcaster('updateRelatedOrgs', { - requestBody: { - related_organization_ids: orgDetails.updatedRows[0].related_orgs, - organization_id: orgDetails.updatedRows[0].id, + const currentDate = new Date() + const eventBody = eventBodyDTO({ + entity: 'relatedOrganization', + eventType: 'update', + entityId: orgDetails.updatedRows[0].id, + changedValues: [ + { + fieldName: 'relatedOrgs', + oldValue: [], + newValue: orgDetails.updatedRows[0].related_orgs, + }, + ], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('orgAdminEvents', { requestBody: eventBody, isInternal: true }) } let domains = [] diff --git a/src/services/user.js b/src/services/user.js index 01fed3361..e2fc93b21 100644 --- a/src/services/user.js +++ b/src/services/user.js @@ -99,12 +99,6 @@ module.exports = class UserHelper { const previousName = currentUser._previousDataValues?.name || null if (currentName !== previousName) { - eventBroadcaster('updateName', { - requestBody: { - mentor_name: currentName, - mentor_id: id, - }, - }) // fetch current date for updatedAt const currentDate = new Date() diff --git a/src/services/userInvite.js b/src/services/userInvite.js index cbac38ffa..61ac9cfa4 100644 --- a/src/services/userInvite.js +++ b/src/services/userInvite.js @@ -346,15 +346,34 @@ module.exports = class UserInviteHelper { //remove session_manager role because the mentee role is enough to change role in mentoring side newRoles = newRoles.filter((role) => role !== common.SESSION_MANAGER_ROLE) + const currentDate = new Date() + //call event to update organization in mentoring if (isOrgUpdate) { - eventBroadcaster('updateOrganization', { - requestBody: { - user_id: existingUser.id, - organization_id: user.organization_id, - roles: currentRoles, + const eventBody = eventBodyDTO({ + entity: 'organization', + eventType: 'update', + entityId: userId, + changedValues: [ + { + fieldName: 'organization_id', + oldValue: '', + newValue: user.organization_id, + }, + { + fieldName: 'roles', + oldValue: '', + newValue: currentRoles, + }, + ], + args: { + updated_at: currentDate.toISOString(), }, }) + await eventBroadcasterMain('orgAdminEvents', { + requestBody: eventBody, + isInternal: true, + }) } if (newRoles.length > 0) { @@ -365,9 +384,23 @@ module.exports = class UserInviteHelper { current_roles: currentRoles, } if (isOrgUpdate) requestBody.organization_id = user.organization_id - eventBroadcaster('roleChange', { - requestBody, + + const eventBody = eventBodyDTO({ + entity: 'userRoles', + eventType: 'update', + entityId: requestDetails.requester_id, + changedValues: [ + { + fieldName: 'roles', + oldValue: currentRoles, + newValue: newRoles, + }, + ], + args: { + updated_at: currentDate.toISOString(), + }, }) + await eventBroadcasterMain('roleChange', { requestBody: eventBody, isInternal: true }) } //remove user data from redis From 1072c269d316f048aff0518d2492fe0a55963641 Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Mon, 5 Feb 2024 17:34:40 +0530 Subject: [PATCH 5/7] event listner error fix --- src/helpers/eventBroadcasterMain.js | 6 ++++++ src/services/org-admin.js | 1 + 2 files changed, 7 insertions(+) diff --git a/src/helpers/eventBroadcasterMain.js b/src/helpers/eventBroadcasterMain.js index fb5f2ff57..7d427da88 100644 --- a/src/helpers/eventBroadcasterMain.js +++ b/src/helpers/eventBroadcasterMain.js @@ -15,6 +15,10 @@ const getEndpoints = (eventGroup) => { if (process.env.EVENT_ORG_LISTENER_URLS) return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) return [] + case 'roleChange': + if (process.env.EVENT_ORG_LISTENER_URLS) + return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) + return [] default: return [] } @@ -28,6 +32,8 @@ const isEventEnabled = (eventGroup) => { return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' case 'deactivateUpcomingSession': return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' + case 'roleChange': + return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' default: return true diff --git a/src/services/org-admin.js b/src/services/org-admin.js index 320cb1502..9ac649522 100644 --- a/src/services/org-admin.js +++ b/src/services/org-admin.js @@ -21,6 +21,7 @@ const organizationQueries = require('@database/queries/organization') const notificationTemplateQueries = require('@database/queries/notificationTemplate') const { eventBroadcaster } = require('@helpers/eventBroadcaster') const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') +const { eventBodyDTO } = require('@dtos/eventBody') const { Queue } = require('bullmq') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') From 854c3d2ed2d35b280bf74f9163d7df037f49eac4 Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Thu, 15 Feb 2024 19:40:08 +0530 Subject: [PATCH 6/7] user service changes for count --- src/database/queries/users.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/database/queries/users.js b/src/database/queries/users.js index fa1413f4c..f04d6e982 100644 --- a/src/database/queries/users.js +++ b/src/database/queries/users.js @@ -196,7 +196,6 @@ exports.listUsersFromView = async (roleId, organization_id, page, limit, search, const filterQuery = ` SELECT - COUNT(*) OVER () as total_count, users.id, users.name, users.email, @@ -242,7 +241,21 @@ exports.listUsersFromView = async (roleId, organization_id, page, limit, search, return user }) - return { count: users.length > 0 ? Number(users[0].total_count) : 0, data: users } + const countQuery = ` SELECT COUNT(*) as total_count + FROM m_${database.User.tableName} AS users + LEFT JOIN ${Organization.tableName} AS organization + ON users.organization_id = organization.id + AND organization.status = 'ACTIVE' + ${filterClause}; + ` + + const totalCountData = await Sequelize.query(countQuery, { + type: QueryTypes.SELECT, + replacements: replacements, + }) + const totalCount = totalCountData.length > 0 ? Number(totalCountData[0].total_count) : 0 + + return { count: totalCount, data: users } } catch (error) { throw error } From e0a8e602b1f835260e65a4aef3e2d4264939d3c0 Mon Sep 17 00:00:00 2001 From: adithya_dinesh Date: Thu, 15 Feb 2024 19:51:00 +0530 Subject: [PATCH 7/7] revert changes --- src/helpers/eventBroadcasterMain.js | 19 ---------- src/services/admin.js | 54 +++++++---------------------- src/services/org-admin.js | 35 +++++-------------- src/services/organization.js | 19 +++------- src/services/user.js | 24 ++++--------- src/services/userInvite.js | 47 ++++--------------------- 6 files changed, 39 insertions(+), 159 deletions(-) diff --git a/src/helpers/eventBroadcasterMain.js b/src/helpers/eventBroadcasterMain.js index 7d427da88..068be4347 100644 --- a/src/helpers/eventBroadcasterMain.js +++ b/src/helpers/eventBroadcasterMain.js @@ -7,18 +7,6 @@ const getEndpoints = (eventGroup) => { if (process.env.EVENT_ORG_LISTENER_URLS) return process.env.EVENT_ORG_LISTENER_URLS.split(',').filter((url) => url.trim()) return [] - case 'orgAdminEvents': - if (process.env.EVENT_ORG_LISTENER_URLS) - return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) - return [] - case 'deactivateUpcomingSession': - if (process.env.EVENT_ORG_LISTENER_URLS) - return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) - return [] - case 'roleChange': - if (process.env.EVENT_ORG_LISTENER_URLS) - return process.env.EVENT_ORG_ADMIN_URLS.split(',').filter((url) => url.trim()) - return [] default: return [] } @@ -28,13 +16,6 @@ const isEventEnabled = (eventGroup) => { switch (eventGroup) { case 'organizationEvents': return process.env.EVENT_ENABLE_ORG_EVENTS !== 'false' - case 'orgAdminEvents': - return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' - case 'deactivateUpcomingSession': - return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' - case 'roleChange': - return process.env.EVENT_ENABLE_ORG_ADMIN_EVENTS !== 'false' - default: return true } diff --git a/src/services/admin.js b/src/services/admin.js index 5a2743fee..f367d071d 100644 --- a/src/services/admin.js +++ b/src/services/admin.js @@ -15,8 +15,6 @@ const userQueries = require('@database/queries/users') const roleQueries = require('@database/queries/user-role') const organizationQueries = require('@database/queries/organization') const { eventBroadcaster } = require('@helpers/eventBroadcaster') -const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') -const { eventBodyDTO } = require('@dtos/eventBody') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') const adminService = require('../generics/materializedViews') @@ -350,28 +348,14 @@ module.exports = class AdminHelper { } ) - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'organization', - eventType: 'update', - entityId: userId, - changedValues: [ - { - fieldName: 'organization_id', - oldValue: '', - newValue: organizationId, - }, - { - fieldName: 'roles', - oldValue: '', - newValue: _.map(roleData, 'title'), - }, - ], - args: { - updated_at: currentDate.toISOString(), + // update organization in mentoring + eventBroadcaster('updateOrganization', { + requestBody: { + user_id: userId, + organization_id: organizationId, + roles: _.map(roleData, 'title'), }, }) - await eventBroadcasterMain('orgAdminEvents', { requestBody: eventBody, isInternal: true }) const result = { user_id: userId, @@ -440,18 +424,11 @@ module.exports = class AdminHelper { ) const userIds = _.map(users, 'id') - - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'sessions', - eventType: 'update', - entityId: userIds, - changedValues: [], - args: { - updated_at: currentDate.toISOString(), + eventBroadcaster('deactivateUpcomingSession', { + requestBody: { + user_ids: userIds, }, }) - await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, @@ -513,17 +490,12 @@ module.exports = class AdminHelper { }) } - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'sessions', - eventType: 'update', - entityId: userIds, - changedValues: [], - args: { - updated_at: currentDate.toISOString(), + //check and deactivate upcoming sessions + eventBroadcaster('deactivateUpcomingSession', { + requestBody: { + user_ids: userIds, }, }) - await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, diff --git a/src/services/org-admin.js b/src/services/org-admin.js index 13dd8c269..3b5d136bc 100644 --- a/src/services/org-admin.js +++ b/src/services/org-admin.js @@ -20,8 +20,6 @@ const entityTypeQueries = require('@database/queries/entityType') const organizationQueries = require('@database/queries/organization') const notificationTemplateQueries = require('@database/queries/notificationTemplate') const { eventBroadcaster } = require('@helpers/eventBroadcaster') -const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') -const { eventBodyDTO } = require('@dtos/eventBody') const { Queue } = require('bullmq') const { Op } = require('sequelize') const UserCredentialQueries = require('@database/queries/userCredential') @@ -338,17 +336,12 @@ module.exports = class OrgAdminHelper { }) } - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'sessions', - eventType: 'update', - entityId: userIds, - changedValues: [], - args: { - updated_at: currentDate.toISOString(), + //check and deactivate upcoming sessions + eventBroadcaster('deactivateUpcomingSession', { + requestBody: { + user_ids: userIds, }, }) - await eventBroadcasterMain('deactivateUpcomingSession', { requestBody: eventBody, isInternal: true }) return responses.successResponse({ statusCode: httpStatusCode.ok, @@ -438,23 +431,13 @@ function updateRoleForApprovedRequest(requestDetails, user) { { attributes: ['title', 'id', 'user_type', 'status'] } ) - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'userRoles', - eventType: 'update', - entityId: requestDetails.requester_id, - changedValues: [ - { - fieldName: 'roles', - oldValue: _.map(userRoles, 'title'), - newValue: [newRole.title], - }, - ], - args: { - updated_at: currentDate.toISOString(), + eventBroadcaster('roleChange', { + requestBody: { + user_id: requestDetails.requester_id, + new_roles: [newRole.title], + current_roles: _.map(userRoles, 'title'), }, }) - await eventBroadcasterMain('roleChange', { requestBody: eventBody, isInternal: true }) let rolesToUpdate = [requestDetails.role] diff --git a/src/services/organization.js b/src/services/organization.js index 63552618e..76f61f18a 100644 --- a/src/services/organization.js +++ b/src/services/organization.js @@ -186,23 +186,12 @@ module.exports = class OrganizationsHelper { raw: true, }) - const currentDate = new Date() - const eventBody = eventBodyDTO({ - entity: 'relatedOrganization', - eventType: 'update', - entityId: orgDetails.updatedRows[0].id, - changedValues: [ - { - fieldName: 'relatedOrgs', - oldValue: [], - newValue: orgDetails.updatedRows[0].related_orgs, - }, - ], - args: { - updated_at: currentDate.toISOString(), + eventBroadcaster('updateRelatedOrgs', { + requestBody: { + related_organization_ids: orgDetails.updatedRows[0].related_orgs, + organization_id: orgDetails.updatedRows[0].id, }, }) - await eventBroadcasterMain('orgAdminEvents', { requestBody: eventBody, isInternal: true }) } let domains = [] diff --git a/src/services/user.js b/src/services/user.js index 6efceba0f..194561be2 100644 --- a/src/services/user.js +++ b/src/services/user.js @@ -18,10 +18,8 @@ const { removeDefaultOrgEntityTypes } = require('@generics/utils') const _ = require('lodash') const { Op } = require('sequelize') const { eventBroadcaster } = require('@helpers/eventBroadcaster') -const { eventBroadcasterMain } = require('@helpers/eventBroadcasterMain') const emailEncryption = require('@utils/emailEncryption') const responses = require('@helpers/responses') -const helper = require('csvtojson') const rolePermissionMappingQueries = require('@database/queries/role-permission-mapping') module.exports = class UserHelper { @@ -100,22 +98,12 @@ module.exports = class UserHelper { const previousName = currentUser._previousDataValues?.name || null if (currentName !== previousName) { - // fetch current date for updatedAt - const currentDate = new Date() - - eventBroadcasterMain('updateName'), - { - entity: 'user', - eventType: 'update', - entityId: id, - changes: { - mentor_name: { - oldValue: previousName, - newValue: currentName, - }, - }, - updatedAt: currentDate.toISOString(), - } + eventBroadcaster('updateName', { + requestBody: { + mentor_name: currentName, + mentor_id: id, + }, + }) } const redisUserKey = common.redisUserPrefix + id.toString() if (await utils.redisGet(redisUserKey)) { diff --git a/src/services/userInvite.js b/src/services/userInvite.js index e853e42bd..29678d878 100644 --- a/src/services/userInvite.js +++ b/src/services/userInvite.js @@ -346,34 +346,15 @@ module.exports = class UserInviteHelper { //remove session_manager role because the mentee role is enough to change role in mentoring side newRoles = newRoles.filter((role) => role !== common.SESSION_MANAGER_ROLE) - const currentDate = new Date() - //call event to update organization in mentoring if (isOrgUpdate) { - const eventBody = eventBodyDTO({ - entity: 'organization', - eventType: 'update', - entityId: userId, - changedValues: [ - { - fieldName: 'organization_id', - oldValue: '', - newValue: user.organization_id, - }, - { - fieldName: 'roles', - oldValue: '', - newValue: currentRoles, - }, - ], - args: { - updated_at: currentDate.toISOString(), + eventBroadcaster('updateOrganization', { + requestBody: { + user_id: existingUser.id, + organization_id: user.organization_id, + roles: currentRoles, }, }) - await eventBroadcasterMain('orgAdminEvents', { - requestBody: eventBody, - isInternal: true, - }) } if (newRoles.length > 0) { @@ -384,23 +365,9 @@ module.exports = class UserInviteHelper { current_roles: currentRoles, } if (isOrgUpdate) requestBody.organization_id = user.organization_id - - const eventBody = eventBodyDTO({ - entity: 'userRoles', - eventType: 'update', - entityId: requestDetails.requester_id, - changedValues: [ - { - fieldName: 'roles', - oldValue: currentRoles, - newValue: newRoles, - }, - ], - args: { - updated_at: currentDate.toISOString(), - }, + eventBroadcaster('roleChange', { + requestBody, }) - await eventBroadcasterMain('roleChange', { requestBody: eventBody, isInternal: true }) } //remove user data from redis