Files
worklenz/worklenz-backend/src/controllers/activity-logs-controller.ts

35 lines
1.5 KiB
TypeScript

import moment from "moment";
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 {formatDuration, formatLogText, getColor} from "../shared/utils";
export default class ActivitylogsController extends WorklenzControllerBase {
@HandleExceptions()
public static async get(req: IWorkLenzRequest, res: IWorkLenzResponse): Promise<IWorkLenzResponse> {
const {id} = req.params;
const q = `SELECT get_activity_logs_by_task($1) AS activity_logs;`;
const result = await db.query(q, [id]);
const [data] = result.rows;
for (const log of data.activity_logs.logs) {
if (log.attribute_type === "estimation") {
log.previous = formatDuration(moment.duration(log.previous, "minutes"));
log.current = formatDuration(moment.duration(log.current, "minutes"));
}
if (log.assigned_user) log.assigned_user.color_code = getColor(log.assigned_user.name);
log.done_by.color_code = getColor(log.done_by.name);
log.log_text = await formatLogText(log);
log.attribute_type = log.attribute_type?.replace(/_/g, " ");
}
data.activity_logs.color_code = getColor(data.activity_logs.name);
return res.status(200).send(new ServerResponse(true, data.activity_logs));
}
}