76 lines
1.9 KiB
TypeScript
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;
|
|
}
|