diff --git a/server/api/controllers/projects/index.js b/server/api/controllers/projects/index.js index 539025fe..4e4c47ac 100755 --- a/server/api/controllers/projects/index.js +++ b/server/api/controllers/projects/index.js @@ -3,25 +3,36 @@ module.exports = { const { currentUser } = this.req; const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id); + const managerProjects = await sails.helpers.projects.getMany(managerProjectIds); - const boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id); - const membershipBoardIds = await sails.helpers.utils.mapRecords(boardMemberships, 'boardId'); + let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id); - const membershipBoards = await sails.helpers.boards.getMany({ + let membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId'); + + let membershipBoards = await sails.helpers.boards.getMany({ id: membershipBoardIds, projectId: { '!=': managerProjectIds, }, }); - const membershipProjectIds = sails.helpers.utils.mapRecords( - membershipBoards, - 'projectId', - true, + let membershipProjectIds = sails.helpers.utils.mapRecords(membershipBoards, 'projectId', true); + const membershipProjects = await sails.helpers.projects.getMany(membershipProjectIds); + + membershipProjectIds = sails.helpers.utils.mapRecords(membershipProjects); + + membershipBoards = membershipBoards.filter((membershipBoard) => + membershipProjectIds.includes(membershipBoard.projectId), + ); + + membershipBoardIds = sails.helpers.utils.mapRecords(membershipBoards); + + boardMemberships = boardMemberships.filter((boardMembership) => + membershipBoardIds.includes(boardMembership.boardId), ); const projectIds = [...managerProjectIds, ...membershipProjectIds]; - const projects = await sails.helpers.projects.getMany(projectIds); + const projects = [...managerProjects, ...membershipProjects]; const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds); diff --git a/server/api/helpers/projects/delete-one.js b/server/api/helpers/projects/delete-one.js index 76a453c4..39c832df 100644 --- a/server/api/helpers/projects/delete-one.js +++ b/server/api/helpers/projects/delete-one.js @@ -10,12 +10,6 @@ module.exports = { }, async fn(inputs) { - const boardIds = await sails.helpers.projects.getBoardIds(inputs.record.id); - - await BoardMembership.destroy({ - boardId: boardIds, - }).fetch(); - const projectManagers = await ProjectManager.destroy({ projectId: inputs.record.id, }).fetch(); @@ -25,14 +19,14 @@ module.exports = { if (project) { const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId'); + const boardIds = await sails.helpers.projects.getBoardIds(project.id); + const boardRooms = boardIds.map((boardId) => `board:${boardId}`); + const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds); const userIds = _.union(managerUserIds, memberUserIds); userIds.forEach((userId) => { - sails.sockets.removeRoomMembersFromRooms( - `user:${userId}`, - boardIds.map((boardId) => `board:${boardId}`), - ); + sails.sockets.removeRoomMembersFromRooms(`user:${userId}`, boardRooms); sails.sockets.broadcast( `user:${userId}`,