Files
worklenz/worklenz-backend/src/cron_jobs/helpers.ts
chamikaJ 8825b0410a init
2025-04-17 18:28:54 +05:30

76 lines
1.9 KiB
TypeScript

import {ITaskAssignmentModelProject, ITaskAssignmentModelTeam} from "../interfaces/task-assignments-model";
import {isLocalServer} from "../shared/utils";
export function mapMembersWithAnd(members: string) {
const $members = members.split(",").map(m => m.trim());
if ($members.length > 1) {
const last = $members.pop();
const end = last ? ` and ${last}` : "";
return `${$members.join(", ")}${end}`;
}
return "";
}
export function getBaseUrl() {
if (isLocalServer()) return `http://${process.env.FRONTEND_URL}`;
return `https://${process.env.FRONTEND_URL}`;
}
function mapMembers(project: ITaskAssignmentModelProject) {
for (const task of project.tasks || []) {
if (task.members)
task.members = mapMembersWithAnd(task.members);
}
}
function updateUrls(project: ITaskAssignmentModelProject) {
project.url = `${getBaseUrl()}/worklenz/projects/${project.id}`;
if (project.tasks) {
project.tasks = project.tasks.map(task => {
if (task.id)
task.url = `${project.url}?task=${task.id}`;
return task;
});
}
}
export function mapTeams(data?: ITaskAssignmentModelTeam[]) {
if (!data) return [];
const result = [];
for (const item of data || []) {
const projects = item.projects?.filter(project => project.tasks?.length);
for (const project of projects || []) {
if (project.id) {
mapMembers(project);
updateUrls(project);
}
}
if (projects?.length) {
item.projects = projects;
result.push(item);
}
}
return result;
}
export function mapProjects(data?: ITaskAssignmentModelTeam[]) {
if (!data) return [];
const result = [];
for (const item of data || []) {
const projects = item.projects?.filter(project => project.tasks?.length);
for (const project of projects || []) {
if (project.id) {
mapMembers(project);
updateUrls(project);
result.push(project);
}
}
}
return result;
}