Skip to content

Commit 29a68c8

Browse files
committed
fix: Fixed UserProfile delete reflect in Teams page
1 parent 6c969e0 commit 29a68c8

1 file changed

Lines changed: 34 additions & 1 deletion

File tree

src/controllers/userProfileController.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const moment_ = require('moment');
1414
const jwt = require('jsonwebtoken');
1515
const userHelper = require('../helpers/userHelper')();
1616
const TimeEntry = require('../models/timeentry');
17+
const Team = require('../models/team');
1718
const logger = require('../startup/logger');
1819
const Badge = require('../models/badge');
1920
// eslint-disable-next-line no-unused-vars
@@ -477,7 +478,39 @@ const createControllerMethods = function (UserProfile, Project, cache) {
477478
}
478479

479480
if (req.body.teams !== undefined) {
480-
record.teams = Array.from(new Set(req.body.teams));
481+
const updatedTeams = Array.from(new Set(req.body.teams));
482+
483+
// Find teams that were removed
484+
const removedTeams = record.teams.filter(
485+
(teamId) => !updatedTeams.includes(teamId.toString()),
486+
);
487+
488+
// Find teams that were added
489+
const addedTeams = updatedTeams.filter(
490+
(teamId) => !record.teams.map((t) => t.toString()).includes(teamId),
491+
);
492+
493+
// Remove user from Team's members array for each removed team
494+
if (removedTeams.length > 0) {
495+
await Team.updateMany(
496+
{ _id: { $in: removedTeams } },
497+
{ $pull: { members: { userId: mongoose.Types.ObjectId(record._id) } } },
498+
);
499+
}
500+
501+
// Add user to Team's members array for each added team
502+
if (addedTeams.length > 0) {
503+
await Team.updateMany(
504+
{ _id: { $in: addedTeams } },
505+
{
506+
$push: {
507+
members: { userId: mongoose.Types.ObjectId(record._id), addDateTime: new Date() },
508+
},
509+
},
510+
);
511+
}
512+
513+
record.teams = updatedTeams;
481514
}
482515

483516
await updateProjects(req, record);

0 commit comments

Comments
 (0)