1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 13:19:44 +02:00
planka/server/api/controllers/projects/index.js

55 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-08-31 04:07:25 +05:00
module.exports = {
async fn() {
2019-08-31 04:07:25 +05:00
const { currentUser } = this.req;
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id);
const managerProjects = await sails.helpers.projects.getMany(managerProjectIds);
2019-08-31 04:07:25 +05:00
let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
const membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
let membershipBoards = await sails.helpers.boards.getMany({
id: membershipBoardIds,
projectId: {
'!=': managerProjectIds,
},
});
let membershipProjectIds = sails.helpers.utils.mapRecords(membershipBoards, 'projectId', true);
const membershipProjects = await sails.helpers.projects.getMany(membershipProjectIds);
membershipProjectIds = sails.helpers.utils.mapRecords(membershipProjects);
const projectIds = [...managerProjectIds, ...membershipProjectIds];
const projects = [...managerProjects, ...membershipProjects];
2019-08-31 04:07:25 +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);
membershipBoards = membershipBoards.filter((membershipBoard) =>
membershipProjectIds.includes(membershipBoard.projectId),
);
const boards = [...managerBoards, ...membershipBoards];
const boardIds = sails.helpers.utils.mapRecords(boards);
boardMemberships = boardMemberships.filter((boardMembership) =>
boardIds.includes(boardMembership.boardId),
);
return {
2019-08-31 04:07:25 +05:00
items: projects,
included: {
users,
projectManagers,
boards,
boardMemberships,
},
};
},
2019-08-31 04:07:25 +05:00
};