diff --git a/src/database/queries/mentorExtension.js b/src/database/queries/mentorExtension.js index 34036688f..f03252b5b 100644 --- a/src/database/queries/mentorExtension.js +++ b/src/database/queries/mentorExtension.js @@ -261,7 +261,7 @@ module.exports = class MentorExtensionQueries { additionalFilter = `${searchFilter.whereClause}` } - const filterClause = filter?.query.length > 0 ? `${filter.query}` : '' + let filterClause = filter?.query.length > 0 ? `${filter.query}` : '' let saasFilterClause = saasFilter !== '' ? saasFilter : '' const defaultFilterClause = defaultFilter != '' ? 'AND ' + defaultFilter : '' diff --git a/src/database/queries/userExtension.js b/src/database/queries/userExtension.js index 27c5f52ea..2e2914b31 100644 --- a/src/database/queries/userExtension.js +++ b/src/database/queries/userExtension.js @@ -571,8 +571,9 @@ module.exports = class MenteeExtensionQueries { replacements.limit = limit } else { // Provide defaults if page/limit not specified + // No pagination: return all provided IDs (e.g. select_all=true flow) replacements.offset = 0 - replacements.limit = 5 // Default limit + replacements.limit = ids.length > 0 ? ids.length : 5000 } let results = await Sequelize.query(query, { diff --git a/src/services/mentees.js b/src/services/mentees.js index 866d650ab..b7d534307 100644 --- a/src/services/mentees.js +++ b/src/services/mentees.js @@ -1525,17 +1525,34 @@ module.exports = class MenteesHelper { const query = utils.processQueryParametersWithExclusions(queryParams) const userExtensionModelName = await menteeQueries.getModelName() + const defaults = await getDefaults() + if (!defaults.tenantCode) + return responses.failureResponse({ + message: 'DEFAULT_ORG_CODE_NOT_SET', + statusCode: httpStatusCode.bad_request, + responseCode: 'CLIENT_ERROR', + }) + + let validationData = await entityTypeCache.getEntityTypesAndEntitiesWithCache( + { + status: common.ACTIVE_STATUS, + model_names: { [Op.overlap]: [userExtensionModelName] }, + }, + tenantCode, + organizationCode, + userExtensionModelName + ) + + let filteredQuery = utils.validateAndBuildFilters(query, validationData) + let connectedMenteeIds = [] let connectedMenteesCount if (queryParams.connected_mentees === 'true') { - const connectedQueryParams = { ...queryParams } - delete connectedQueryParams.connected_mentees - const connectedQuery = utils.processQueryParametersWithExclusions(connectedQueryParams) - + const selectAll = queryParams.select_all === 'true' const connectionDetails = await connectionQueries.getConnectionsDetails( - pageNo, - pageSize, - connectedQuery, + selectAll ? null : pageNo, + selectAll ? null : pageSize, + filteredQuery, searchText, queryParams.mentorId ? queryParams.mentorId : userId, organization_codes, @@ -1547,9 +1564,6 @@ module.exports = class MenteesHelper { pageNo = null pageSize = null connectedMenteeIds = connectionDetails.data.map((item) => item.user_id) - // if (!connectedMenteeIds.includes(userId)) { - // connectedMenteeIds.push(userId) - // } } if (typeof connectionDetails?.count === 'number') { connectedMenteesCount = connectionDetails.count @@ -1567,27 +1581,6 @@ module.exports = class MenteesHelper { }) } } - - const defaults = await getDefaults() - if (!defaults.tenantCode) - return responses.failureResponse({ - message: 'DEFAULT_ORG_CODE_NOT_SET', - statusCode: httpStatusCode.bad_request, - responseCode: 'CLIENT_ERROR', - }) - - let validationData = await entityTypeCache.getEntityTypesAndEntitiesWithCache( - { - status: common.ACTIVE_STATUS, - model_names: { [Op.overlap]: [userExtensionModelName] }, - }, - tenantCode, - organizationCode, - userExtensionModelName - ) - - let filteredQuery = utils.validateAndBuildFilters(query, validationData) - const emailIds = [] const searchTextArray = searchText ? searchText.split(',') : [] diff --git a/src/services/mentors.js b/src/services/mentors.js index 8652c5208..a9093959f 100644 --- a/src/services/mentors.js +++ b/src/services/mentors.js @@ -1389,34 +1389,38 @@ module.exports = class MentorsHelper { } let connectedMentorsIds = [] + let connectedMentorsCount if (queryParams.connected_mentors === 'true') { - const connectedQueryParams = { ...queryParams } - delete connectedQueryParams.connected_mentors - const connectedQuery = utils.processQueryParametersWithExclusions(connectedQueryParams) - const connectionDetails = await connectionQueries.getConnectionsDetails( pageNo, pageSize, - connectedQuery, + filteredQuery, searchText, queryParams.mentorId ? queryParams.mentorId : userId, organization_codes, - [] // roles can be passed if needed + [], // roles can be passed if needed + tenantCode ) if (connectionDetails?.data?.length > 0) { + pageNo = null + pageSize = null connectedMentorsIds = connectionDetails.data.map((item) => item.user_id) if (!connectedMentorsIds.includes(userId)) { connectedMentorsIds.push(userId) } } - // If there are no connected mentees, short-circuit and return empty + if (typeof connectionDetails?.count === 'number') { + connectedMentorsCount = connectionDetails.count + } + + // If there are no connected mentors, short-circuit and return empty if (connectedMentorsIds.length === 0) { return responses.successResponse({ statusCode: httpStatusCode.ok, - message: 'MENTEE_LIST', + message: 'MENTOR_LIST', result: { data: [], count: 0, @@ -1570,6 +1574,10 @@ module.exports = class MentorsHelper { } } + if (connectedMentorsCount !== undefined) { + extensionDetails.count = connectedMentorsCount + } + return responses.successResponse({ statusCode: httpStatusCode.ok, message: 'MENTOR_LIST',