2019-08-31 04:07:25 +05:00
|
|
|
module.exports = {
|
2021-06-24 01:05:22 +05:00
|
|
|
async fn() {
|
2019-08-31 04:07:25 +05:00
|
|
|
const { currentUser } = this.req;
|
|
|
|
|
2021-06-24 01:05:22 +05:00
|
|
|
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id);
|
2022-04-28 14:15:36 +05:00
|
|
|
const managerProjects = await sails.helpers.projects.getMany(managerProjectIds);
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2022-04-28 14:15:36 +05:00
|
|
|
let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
|
2021-06-24 01:05:22 +05:00
|
|
|
|
2022-04-28 14:15:36 +05:00
|
|
|
let membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
|
|
|
|
|
|
|
|
let membershipBoards = await sails.helpers.boards.getMany({
|
2021-06-24 01:05:22 +05:00
|
|
|
id: membershipBoardIds,
|
|
|
|
projectId: {
|
|
|
|
'!=': managerProjectIds,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
2022-04-28 14:15:36 +05:00
|
|
|
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),
|
2019-11-05 18:01:42 +05:00
|
|
|
);
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2021-06-24 01:05:22 +05:00
|
|
|
const projectIds = [...managerProjectIds, ...membershipProjectIds];
|
2022-04-28 14:15:36 +05:00
|
|
|
const projects = [...managerProjects, ...membershipProjects];
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2021-06-24 01:05:22 +05:00
|
|
|
const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds);
|
|
|
|
|
|
|
|
const userIds = sails.helpers.utils.mapRecords(projectManagers, 'userId', true);
|
|
|
|
const users = await sails.helpers.users.getMany(userIds);
|
|
|
|
|
|
|
|
const managerBoards = await sails.helpers.projects.getBoards(managerProjectIds);
|
|
|
|
const boards = [...managerBoards, ...membershipBoards];
|
|
|
|
|
|
|
|
return {
|
2019-08-31 04:07:25 +05:00
|
|
|
items: projects,
|
|
|
|
included: {
|
|
|
|
users,
|
2021-06-24 01:05:22 +05:00
|
|
|
projectManagers,
|
2019-11-05 18:01:42 +05:00
|
|
|
boards,
|
2021-06-24 01:05:22 +05:00
|
|
|
boardMemberships,
|
2019-11-05 18:01:42 +05:00
|
|
|
},
|
2021-06-24 01:05:22 +05:00
|
|
|
};
|
2019-11-05 18:01:42 +05:00
|
|
|
},
|
2019-08-31 04:07:25 +05:00
|
|
|
};
|