Files
worklenz/worklenz-backend/src/controllers/project-managers-controller.ts

46 lines
2.6 KiB
TypeScript

import db from "../config/db";
import HandleExceptions from "../decorators/handle-exceptions";
import { IWorkLenzRequest } from "../interfaces/worklenz-request";
import { IWorkLenzResponse } from "../interfaces/worklenz-response";
import { ServerResponse } from "../models/server-response";
import WorklenzControllerBase from "./worklenz-controller-base";
export default class ProjectManagersController extends WorklenzControllerBase {
@HandleExceptions()
public static async getByOrg(_req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
// const q = `SELECT DISTINCT (SELECT user_id from team_member_info_view tmv WHERE tmv.team_member_id = pm.team_member_id),
// team_member_id,
// (SELECT name from team_member_info_view tmv WHERE tmv.team_member_id = pm.team_member_id)
// FROM project_members pm
// WHERE project_access_level_id = (SELECT id FROM project_access_levels WHERE key = 'PROJECT_MANAGER')
// AND pm.project_id IN (SELECT id FROM projects WHERE team_id IN (SELECT id FROM teams WHERE in_organization(id, $1)));`;
// const q = `SELECT DISTINCT tmv.user_id,
// tmv.name,
// pm.team_member_id
// FROM team_member_info_view tmv
// INNER JOIN project_members pm ON tmv.team_member_id = pm.team_member_id
// INNER JOIN projects p ON pm.project_id = p.id
// WHERE pm.project_access_level_id = (SELECT id FROM project_access_levels WHERE key = 'PROJECT_MANAGER')
// AND p.team_id IN (SELECT id FROM teams WHERE in_organization(id, $1))`;
const q = `SELECT DISTINCT ON (tm.user_id)
tm.user_id AS id,
u.name,
pm.team_member_id
FROM
projects p
JOIN project_members pm ON p.id = pm.project_id
JOIN teams t ON p.team_id = t.id
JOIN team_members tm ON pm.team_member_id = tm.id
JOIN team_member_info_view tmi ON tm.id = tmi.team_member_id
JOIN users u ON tm.user_id = u.id
WHERE
t.id IN (SELECT id FROM teams WHERE in_organization(id, $1))
AND pm.project_access_level_id = (SELECT id FROM project_access_levels WHERE key = 'PROJECT_MANAGER')
GROUP BY
tm.user_id, u.name, pm.team_member_id`;
const result = await db.query(q, [_req.user?.team_id]);
return res.status(200).send(new ServerResponse(true, result.rows));
}
}