Initial commit: Angular frontend and Expressjs backend

This commit is contained in:
chamikaJ
2024-05-17 09:32:30 +05:30
parent eb0a0d77d6
commit 298ca6beeb
3548 changed files with 193558 additions and 3 deletions

View File

@@ -0,0 +1,92 @@
import {IWorkLenzRequest} from "../interfaces/worklenz-request";
import {IWorkLenzResponse} from "../interfaces/worklenz-response";
import db from "../config/db";
import {ServerResponse} from "../models/server-response";
import WorklenzControllerBase from "./worklenz-controller-base";
import HandleExceptions from "../decorators/handle-exceptions";
import {TASK_PRIORITY_COLOR_ALPHA, WorklenzColorCodes} from "../shared/constants";
export default class LabelsController extends WorklenzControllerBase {
@HandleExceptions()
public static async get(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const q = `
WITH lbs AS (SELECT id,
name,
color_code,
(SELECT COUNT(*) FROM task_labels WHERE label_id = team_labels.id) AS usage,
EXISTS(SELECT 1
FROM task_labels
WHERE task_labels.label_id = team_labels.id
AND EXISTS(SELECT 1
FROM tasks
WHERE id = task_labels.task_id
AND project_id = $2)) AS used
FROM team_labels
WHERE team_id = $1
ORDER BY name)
SELECT id, name, color_code, usage
FROM lbs
ORDER BY used DESC;
`;
const result = await db.query(q, [req.user?.team_id, req.query.project || null]);
return res.status(200).send(new ServerResponse(true, result.rows));
}
@HandleExceptions()
public static async getByTask(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const q = `
SELECT (SELECT name FROM team_labels WHERE id = task_labels.label_id),
(SELECT color_code FROM team_labels WHERE id = task_labels.label_id)
FROM task_labels
WHERE task_id = $1;
`;
const result = await db.query(q, [req.params.id]);
return res.status(200).send(new ServerResponse(true, result.rows));
}
@HandleExceptions()
public static async getByProject(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const q = `
SELECT id, name, color_code
FROM team_labels
WHERE team_id = $2
AND EXISTS(SELECT 1
FROM tasks
WHERE project_id = $1
AND EXISTS(SELECT 1 FROM task_labels WHERE task_id = tasks.id AND label_id = team_labels.id))
ORDER BY name;
`;
const result = await db.query(q, [req.params.id, req.user?.team_id]);
for (const label of result.rows) {
label.color_code = label.color_code + TASK_PRIORITY_COLOR_ALPHA;
}
return res.status(200).send(new ServerResponse(true, result.rows));
}
@HandleExceptions()
public static async updateColor(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const q = `UPDATE team_labels
SET color_code = $3
WHERE id = $1
AND team_id = $2;`;
if (!WorklenzColorCodes.includes(req.body.color))
return res.status(400).send(new ServerResponse(false, null));
const result = await db.query(q, [req.params.id, req.user?.team_id, req.body.color]);
return res.status(200).send(new ServerResponse(true, result.rows));
}
@HandleExceptions()
public static async deleteById(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const q = `DELETE
FROM team_labels
WHERE id = $1
AND team_id = $2;`;
const result = await db.query(q, [req.params.id, req.user?.team_id]);
return res.status(200).send(new ServerResponse(true, result.rows));
}
}