From 4f85d10b9be3968d935bb57cf3f13b593903377b Mon Sep 17 00:00:00 2001 From: Jatin Agrawal Date: Fri, 23 Aug 2024 09:36:43 -0700 Subject: [PATCH 01/15] api endpoint created --- src/controllers/userProfileController.js | 12 ++++++++++++ src/routes/userProfileRouter.js | 1 + 2 files changed, 13 insertions(+) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 6572635f3..9cbd4ad67 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -1599,6 +1599,17 @@ const userProfileController = function (UserProfile, Project) { } } + const updateUserInformation = async function (req,res){ + try { + const result = await UserProfile.findById(req.body.id); + result[req.body.item]=req.body.value + let newdata=await result.save() + res.status(200).send({ message: 'Update successful', newdata }); + } catch (error) { + console.log(error) + return res.status(500) + } + } return { postUserProfile, getUserProfiles, @@ -1623,6 +1634,7 @@ const userProfileController = function (UserProfile, Project) { getProjectsByPerson, getAllTeamCode, getAllTeamCodeHelper, + updateUserInformation }; }; diff --git a/src/routes/userProfileRouter.js b/src/routes/userProfileRouter.js index 795f6cfa3..4228433db 100644 --- a/src/routes/userProfileRouter.js +++ b/src/routes/userProfileRouter.js @@ -23,6 +23,7 @@ const routes = function (userProfile, project) { controller.postUserProfile, ); + userProfileRouter.route('/userProfile/update').patch(controller.updateUserInformation) userProfileRouter .route('/userProfile/:userId') .get(controller.getUserById) From 36ad13ce271bb1a1c79e2bf4cc56dfbee9e7b465 Mon Sep 17 00:00:00 2001 From: Jatin Agrawal Date: Fri, 23 Aug 2024 17:42:38 -0700 Subject: [PATCH 02/15] API working fine --- src/controllers/userProfileController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 9cbd4ad67..6296d8478 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -1610,6 +1610,7 @@ const userProfileController = function (UserProfile, Project) { return res.status(500) } } + return { postUserProfile, getUserProfiles, From a613918eb1bc72cf05f314b0046189bf35f939fa Mon Sep 17 00:00:00 2001 From: huijieliu8 <91745551+metaphor987@users.noreply.github.com> Date: Sun, 25 Aug 2024 21:03:10 -0400 Subject: [PATCH 03/15] fix: set time zone when saving new start date --- src/controllers/userProfileController.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 8226aee65..cd4d34534 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -505,7 +505,7 @@ const userProfileController = function (UserProfile, Project) { } }); - // Since we leverage cache for all team code retrival (refer func getAllTeamCode()), + // Since we leverage cache for all team code retrival (refer func getAllTeamCode()), // we need to remove the cache when team code is updated in case of new team code generation if (req.body.teamCode) { // remove teamCode cache when new team assigned @@ -644,7 +644,8 @@ const userProfileController = function (UserProfile, Project) { } if (req.body.startDate !== undefined && record.startDate !== req.body.startDate) { - record.startDate = moment(req.body.startDate).toDate(); + record.startDate = moment.tz(req.body.startDate, 'America/Los_Angeles').toDate(); + console.log('record.startDate', record.startDate); // Make sure weeklycommittedHoursHistory isn't empty if (record.weeklycommittedHoursHistory.length === 0) { const newEntry = { @@ -1597,23 +1598,25 @@ const userProfileController = function (UserProfile, Project) { return teamCodes; } const distinctTeamCodes = await UserProfile.distinct('teamCode', { - teamCode: { $ne: null } + teamCode: { $ne: null }, }); cache.setCache('teamCodes', JSON.stringify(distinctTeamCodes)); return distinctTeamCodes; } catch (error) { throw new Error('Encountered an error to get all team codes, please try again!'); } - } + }; const getAllTeamCode = async function (req, res) { try { const distinctTeamCodes = await getAllTeamCodeHelper(); return res.status(200).send({ message: 'Found', distinctTeamCodes }); } catch (error) { - return res.status(500).send({ message: 'Encountered an error to get all team codes, please try again!' }); + return res + .status(500) + .send({ message: 'Encountered an error to get all team codes, please try again!' }); } - } + }; return { postUserProfile, From d36e0132948cbbc4dc3b94747c1d9747d01da255 Mon Sep 17 00:00:00 2001 From: huijieliu8 <91745551+metaphor987@users.noreply.github.com> Date: Sun, 1 Sep 2024 19:08:33 -0400 Subject: [PATCH 04/15] fix: time zone problem --- src/controllers/userProfileController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index cd4d34534..13ea7b66e 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -645,7 +645,6 @@ const userProfileController = function (UserProfile, Project) { if (req.body.startDate !== undefined && record.startDate !== req.body.startDate) { record.startDate = moment.tz(req.body.startDate, 'America/Los_Angeles').toDate(); - console.log('record.startDate', record.startDate); // Make sure weeklycommittedHoursHistory isn't empty if (record.weeklycommittedHoursHistory.length === 0) { const newEntry = { @@ -668,7 +667,8 @@ const userProfileController = function (UserProfile, Project) { if (req.body.endDate !== undefined) { if (yearMonthDayDateValidator(req.body.endDate)) { - record.endDate = moment(req.body.endDate).toDate(); + // record.endDate = moment(req.body.endDate).toDate(); + record.endDate = moment.tz(req.body.endDate, 'America/Los_Angeles').toDate(); if (isUserInCache) { userData.endDate = record.endDate.toISOString(); } From 690b290565ccf1fec5e84f2e2b43cb1bee2d91dd Mon Sep 17 00:00:00 2001 From: huijieliu8 <91745551+metaphor987@users.noreply.github.com> Date: Sun, 8 Sep 2024 02:16:14 -0400 Subject: [PATCH 05/15] fix: clean up the comments --- src/controllers/userProfileController.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 13ea7b66e..a0b3af9fe 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -667,7 +667,6 @@ const userProfileController = function (UserProfile, Project) { if (req.body.endDate !== undefined) { if (yearMonthDayDateValidator(req.body.endDate)) { - // record.endDate = moment(req.body.endDate).toDate(); record.endDate = moment.tz(req.body.endDate, 'America/Los_Angeles').toDate(); if (isUserInCache) { userData.endDate = record.endDate.toISOString(); From 7221972f79699cacb69bdb73da93f63ddb480389 Mon Sep 17 00:00:00 2001 From: AJAYINAVOLU Date: Mon, 23 Sep 2024 16:11:30 -0400 Subject: [PATCH 06/15] fix: optimizing the fetch of user profile data for projects page. --- src/controllers/userProfileController.js | 38 ++++++++++++++++++++++-- src/routes/userProfileRouter.js | 3 ++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 15f36f751..4707a9843 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -196,6 +196,38 @@ const userProfileController = function (UserProfile, Project) { .catch((error) => res.status(404).send(error)); }; + /** + * Controller function to retrieve basic user profile information. + * This endpoint checks if the user has the necessary permissions to access user profiles. + * If authorized, it queries the database to fetch only the required fields: + * _id, firstName, lastName, isActive, startDate, and endDate, sorted by last name. + */ + const getUserProfileBasicInfo = async function (req, res) { + if (!(await checkPermission(req, 'getUserProfiles'))) { + forbidden(res, 'You are not authorized to view all users'); + return; + } + + await UserProfile.find({}, '_id firstName lastName isActive startDate createdDate endDate') + .sort({ + lastName: 1, + }) + .then((results) => { + if (!results) { + if (cache.getCache('allusers')) { + const getData = JSON.parse(cache.getCache('allusers')); + res.status(200).send(getData); + return; + } + res.status(500).send({ error: 'User result was invalid' }); + return; + } + cache.setCache('allusers', JSON.stringify(results)); + res.status(200).send(results); + }) + .catch((error) => res.status(404).send(error)); + }; + const getProjectMembers = async function (req, res) { if (!(await hasPermission(req.body.requestor, 'getProjectMembers'))) { res.status(403).send('You are not authorized to view all users'); @@ -888,9 +920,9 @@ const userProfileController = function (UserProfile, Project) { options: { sort: { date: -1, // Sort by date descending if needed - }, }, }, + }, ]) .exec() .then((results) => { @@ -1178,7 +1210,7 @@ const userProfileController = function (UserProfile, Project) { const setEndDate = dateObject; if (moment().isAfter(moment(setEndDate).add(1, 'days'))) { activeStatus = false; - }else if(moment().isBefore(moment(endDate).subtract(3, 'weeks'))){ + } else if (moment().isBefore(moment(endDate).subtract(3, 'weeks'))) { emailThreeWeeksSent = true; } } @@ -1761,7 +1793,6 @@ const userProfileController = function (UserProfile, Project) { .status(500) .send({ message: 'Encountered an error to get all team codes, please try again!' }); } - }; return { @@ -1792,6 +1823,7 @@ const userProfileController = function (UserProfile, Project) { getProjectsByPerson, getAllTeamCode, getAllTeamCodeHelper, + getUserProfileBasicInfo, }; }; diff --git a/src/routes/userProfileRouter.js b/src/routes/userProfileRouter.js index 513aa687e..3e86c5837 100644 --- a/src/routes/userProfileRouter.js +++ b/src/routes/userProfileRouter.js @@ -23,6 +23,9 @@ const routes = function (userProfile, project) { controller.postUserProfile, ); + // Endpoint to retrieve basic user profile information + userProfileRouter.route('/userProfile/basicInfo').get(controller.getUserProfileBasicInfo); + userProfileRouter .route('/userProfile/:userId') .get(controller.getUserById) From 06cbabbc8462db484856b92f16564778b63e3531 Mon Sep 17 00:00:00 2001 From: AJAYINAVOLU Date: Wed, 25 Sep 2024 18:57:44 -0400 Subject: [PATCH 07/15] fix: optimized the total project report endpoint time from 17 seconds to 5 seconds. --- src/controllers/timeEntryController.js | 36 ++++++++++++++++++++++++++ src/routes/timeentryRouter.js | 4 +++ 2 files changed, 40 insertions(+) diff --git a/src/controllers/timeEntryController.js b/src/controllers/timeEntryController.js index b8114633c..b7c60e5ec 100644 --- a/src/controllers/timeEntryController.js +++ b/src/controllers/timeEntryController.js @@ -1096,6 +1096,41 @@ const timeEntrycontroller = function (TimeEntry) { }); }; + const getTimeEntriesForProjectReports = function (req, res) { + const { users, fromDate, toDate } = req.body; + + // Fetch only necessary fields and avoid bringing the entire document + TimeEntry.find( + { + personId: { $in: users }, + dateOfWork: { $gte: fromDate, $lte: toDate }, + }, + 'totalSeconds isTangible dateOfWork projectId', + ) + .populate('projectId', 'projectName _id') + .lean() // lean() for better performance as we don't need Mongoose document methods + .then((results) => { + const data = results.map((element) => { + const record = { + isTangible: element.isTangible, + dateOfWork: element.dateOfWork, + projectId: element.projectId ? element.projectId._id : '', + projectName: element.projectId ? element.projectId.projectName : '', + }; + + // Convert totalSeconds to hours and minutes + [record.hours, record.minutes] = formatSeconds(element.totalSeconds); + + return record; + }); + + res.status(200).send(data); + }) + .catch((error) => { + res.status(400).send({ message: 'Error fetching time entries for project reports', error }); + }); + }; + /** * Get time entries for a specified project */ @@ -1455,6 +1490,7 @@ const timeEntrycontroller = function (TimeEntry) { recalculateHoursByCategoryAllUsers, recalculateIntangibleHrsAllUsers, getTimeEntriesForReports, + getTimeEntriesForProjectReports, }; }; diff --git a/src/routes/timeentryRouter.js b/src/routes/timeentryRouter.js index 0fd7db716..7d0af5ba1 100644 --- a/src/routes/timeentryRouter.js +++ b/src/routes/timeentryRouter.js @@ -19,6 +19,10 @@ const routes = function (TimeEntry) { TimeEntryRouter.route('/TimeEntry/reports').post(controller.getTimeEntriesForReports); + TimeEntryRouter.route('/TimeEntry/reports/projects').post( + controller.getTimeEntriesForProjectReports, + ); + TimeEntryRouter.route('/TimeEntry/lostUsers').post(controller.getLostTimeEntriesForUserList); TimeEntryRouter.route('/TimeEntry/lostProjects').post( From 2068dde5370176d5f541996daaa7ca1763b9f3ad Mon Sep 17 00:00:00 2001 From: AJAYINAVOLU Date: Wed, 25 Sep 2024 20:05:03 -0400 Subject: [PATCH 08/15] fix: optimized the total people report endpoint time from 17 seconds to 5 seconds. --- src/controllers/timeEntryController.js | 32 ++++++++++++++++++++++++++ src/routes/timeentryRouter.js | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/src/controllers/timeEntryController.js b/src/controllers/timeEntryController.js index b7c60e5ec..d3ee86fb0 100644 --- a/src/controllers/timeEntryController.js +++ b/src/controllers/timeEntryController.js @@ -1131,6 +1131,37 @@ const timeEntrycontroller = function (TimeEntry) { }); }; + const getTimeEntriesForPeopleReports = async function (req, res) { + try { + const { users, fromDate, toDate } = req.body; + + const results = await TimeEntry.find( + { + personId: { $in: users }, + dateOfWork: { $gte: fromDate, $lte: toDate }, + }, + 'personId totalSeconds isTangible dateOfWork', + ).lean(); // Use lean() for better performance + + const data = results + .map((entry) => { + const [hours, minutes] = formatSeconds(entry.totalSeconds); + return { + personId: entry.personId, + hours, + minutes, + isTangible: entry.isTangible, + dateOfWork: entry.dateOfWork, + }; + }) + .filter(Boolean); + + res.status(200).send(data); + } catch (error) { + res.status(400).send({ message: 'Error fetching time entries for people reports', error }); + } + }; + /** * Get time entries for a specified project */ @@ -1491,6 +1522,7 @@ const timeEntrycontroller = function (TimeEntry) { recalculateIntangibleHrsAllUsers, getTimeEntriesForReports, getTimeEntriesForProjectReports, + getTimeEntriesForPeopleReports, }; }; diff --git a/src/routes/timeentryRouter.js b/src/routes/timeentryRouter.js index 7d0af5ba1..a5d9f2250 100644 --- a/src/routes/timeentryRouter.js +++ b/src/routes/timeentryRouter.js @@ -23,6 +23,10 @@ const routes = function (TimeEntry) { controller.getTimeEntriesForProjectReports, ); + TimeEntryRouter.route('/TimeEntry/reports/people').post( + controller.getTimeEntriesForPeopleReports, + ); + TimeEntryRouter.route('/TimeEntry/lostUsers').post(controller.getLostTimeEntriesForUserList); TimeEntryRouter.route('/TimeEntry/lostProjects').post( From cbde79429c7c3c9f2267646e68203bcb0bcc351f Mon Sep 17 00:00:00 2001 From: Jatin Agrawal Date: Sat, 28 Sep 2024 17:54:04 -0700 Subject: [PATCH 09/15] all changes now show a single toast message --- .DS_Store | Bin 8196 -> 8196 bytes src/controllers/userProfileController.js | 11 +++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.DS_Store b/.DS_Store index 8d8d400ad748d55ea99c549e9cf8a44bed35dab6..f8c6db91f4ac018eb9ebe1827eb71a4bfb4da590 100644 GIT binary patch delta 436 zcmZp1XmQw}DiAmABQpa70}F#5LpnnyLrHGFi%U{YeiBfO;au_pEYZ*gvZa%_UP}$8N1=ShZJ?278kQdg3v;Bp` znUWkQ*9gmqAX`@8a|G;Ns06}5WC<-44>E56d6OCF@FIrfoOC3w^Btct*-u2wq3bm~ f457-9or)=oV!U_(!{)Uz;mi{Ycs8?3{AC9Kf<%h5 delta 436 zcmZp1XmQw}DiD|MQqI7@z`~%%kj{|FP?DSP;*yk;p9B=+NVSbgm3ng25mi0~uY5s< zVQ_MOZUIma14HhC$;|?e>;ij^JX`+w=;V(A!jta_@F4LWRhiBK)v*C>&tNEJC}zlJ zs6=)_bw>EajX<5@f^uw7X0>3Ts(7FE)n$*t4r2ytEn_Io%||#3D!cikpgJSF`!TT6 z$@0RQaJIj2IFtV7$u+_YVIZ=E7K#TMHh{dz40L!ALvl_!lGizB r1x@x75p%e$+*P{?=2WmUWT#@vq8KkIz_59(OgQtz0-nw65`WnNApD6G diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 6296d8478..53add005e 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -1601,10 +1601,13 @@ const userProfileController = function (UserProfile, Project) { const updateUserInformation = async function (req,res){ try { - const result = await UserProfile.findById(req.body.id); - result[req.body.item]=req.body.value - let newdata=await result.save() - res.status(200).send({ message: 'Update successful', newdata }); + const data=req.body; + data.map(async (e)=> { + let result = await UserProfile.findById(e.user_id); + result[e.item]=e.value + let newdata=await result.save() + }) + res.status(200).send({ message: 'Update successful'}); } catch (error) { console.log(error) return res.status(500) From 64844e3a66029d8a44038e98dba1ea1fae0d2155 Mon Sep 17 00:00:00 2001 From: Jatin Agrawal Date: Sat, 28 Sep 2024 17:58:03 -0700 Subject: [PATCH 10/15] Remove .DS_Store files from tracking --- .DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index f8c6db91f4ac018eb9ebe1827eb71a4bfb4da590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM!EO^V5PfbUhy+48L8V?S!5OK4uv9@R2rl#kC~2a$BI$;-p#m;@&Ih1gTJZ_| z09>Hu&W$@aPFxW}ys@3c?y^zD0U;Pi_VapXJa3;icDw;#)<&IGU>QJzRj_%9%`b}B zrIyN47_mgdc=WbcH@5Qrpya6os(>n>3aA3AfGY5}D8M~iN~2=m_f~CH0af6?R6y1T z%PN=!EIhiUgN-`^5bGRvh5e>rEJV0*(COu%ZukzF6Vq^OsafR9+qiPBaf%pPZ*f>J2Ok1`|Ws|JH*BJU$!Rs z%%pn+_agoY@7imjUZcK4Y$fVm`EWF|#GJ-orfWoqiy4%yNxo}* zg=i%ue+Og%3y;Qu?*Co}ZB>EaRzUW5mSs8r->!cD@0_$z1yq55Qvp+NZM4>SZ((mO x-Q^NTEbAt#6!9xOx)3(vBIE8jPMrQ>$i5A>EMVc078ZRG;AGH775JkH`~)J$BiaA} From 30beb1d0ee33b98c1ff95dee9d7aab60280884b5 Mon Sep 17 00:00:00 2001 From: Nathan Hoffman Date: Tue, 1 Oct 2024 00:59:45 -0700 Subject: [PATCH 11/15] fix: remove edit user permission from mentor --- src/utilities/createInitialPermissions.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utilities/createInitialPermissions.js b/src/utilities/createInitialPermissions.js index 93f4c067c..3a214bbec 100644 --- a/src/utilities/createInitialPermissions.js +++ b/src/utilities/createInitialPermissions.js @@ -153,7 +153,6 @@ const permissionsRoles = [ permissions: [ 'suggestTask', 'putReviewStatus', - 'putUserProfile', 'getReporteesLimitRoles', 'getAllInvInProjectWBS', 'postInvInProjectWBS', From 78ef92554c0fbd9be1063c32d4eeda914e2c8c67 Mon Sep 17 00:00:00 2001 From: mohangadde1 Date: Sat, 5 Oct 2024 19:24:41 -0500 Subject: [PATCH 12/15] added team code --- src/controllers/userProfileController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index a37427ea2..95d3a4e22 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -326,6 +326,7 @@ const userProfileController = function (UserProfile, Project) { up.adminLinks = req.body.adminLinks; up.teams = Array.from(new Set(req.body.teams)); up.projects = Array.from(new Set(req.body.projects)); + up.teamCode = req.body.teamCode; up.createdDate = req.body.createdDate; up.startDate = req.body.startDate ? req.body.startDate : req.body.createdDate; up.email = req.body.email; From 3d3c4abf102c29f335c97ceff2be42ba61e039ae Mon Sep 17 00:00:00 2001 From: Ambika Kabra Date: Sun, 6 Oct 2024 13:30:10 -0700 Subject: [PATCH 13/15] Ambika implement set final day function to deactivate user --- src/cronjobs/userProfileJobs.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cronjobs/userProfileJobs.js b/src/cronjobs/userProfileJobs.js index f0f69e146..e7a8662a6 100644 --- a/src/cronjobs/userProfileJobs.js +++ b/src/cronjobs/userProfileJobs.js @@ -19,6 +19,16 @@ const userProfileJobs = () => { } await userhelper.awardNewBadges(); await userhelper.reActivateUser(); + }, + null, + false, + 'America/Los_Angeles', + ); + + // Job to run every day, 1 minute past midnight to deactivate the user + const dailyUserDeactivateJobs = new CronJob( + '1 0 * * *', // Every day, 1 minute past midnight + async () => { await userhelper.deActivateUser(); }, null, @@ -27,5 +37,6 @@ const userProfileJobs = () => { ); allUserProfileJobs.start(); + dailyUserDeactivateJobs.start(); }; module.exports = userProfileJobs; From b4e346636ab384efad257c69f2b4d6eec2f18651 Mon Sep 17 00:00:00 2001 From: Crystal Date: Mon, 7 Oct 2024 23:03:02 -0700 Subject: [PATCH 14/15] Implement condition to hide user's team's task when team visibility toggle is off --- src/helpers/taskHelper.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/helpers/taskHelper.js b/src/helpers/taskHelper.js index 34fb36be8..fefa9f021 100644 --- a/src/helpers/taskHelper.js +++ b/src/helpers/taskHelper.js @@ -112,9 +112,15 @@ const taskHelper = function () { ); sharedTeamsResult.forEach((_myTeam) => { + let hasTeamVisibility = false; _myTeam.members.forEach((teamMember) => { - if (!teamMember.userId.equals(userid)) teamMemberIds.push(teamMember.userId); + if (teamMember.userId.equals(userid) && teamMember.visible) hasTeamVisibility = true; }); + if (hasTeamVisibility) { + _myTeam.members.forEach((teamMember) => { + if (!teamMember.userId.equals(userid)) teamMemberIds.push(teamMember.userId); + }); + } }); teamMembers = await userProfile From 3abe236351b1739ad5b4928e83097eaef63d6304 Mon Sep 17 00:00:00 2001 From: Jatin Agrawal Date: Sat, 12 Oct 2024 00:41:11 -0700 Subject: [PATCH 15/15] merge conflicts resolved --- src/controllers/userProfileController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/userProfileController.js b/src/controllers/userProfileController.js index 2cb48a89c..8a9124304 100644 --- a/src/controllers/userProfileController.js +++ b/src/controllers/userProfileController.js @@ -1839,8 +1839,8 @@ const userProfileController = function (UserProfile, Project) { getProjectsByPerson, getAllTeamCode, getAllTeamCodeHelper, - updateUserInformation - getUserProfileBasicInfo, + updateUserInformation, + getUserProfileBasicInfo }; };