Skip to content
Snippets Groups Projects
Commit b7acacbb authored by Bernard Roland (Student Com20)'s avatar Bernard Roland (Student Com20)
Browse files

Implemented some of the project adapter functions

parent 17c814a9
No related branches found
No related tags found
No related merge requests found
import { apiRoot } from 'config';
import { getAuthHeader } from './auth';
import { Task } from './task';
import { User } from './user';
import { Work } from './work';
export interface Project { export interface Project {
id: string; id: string;
name: string; name: string;
text: string;
color: string;
status: 'open' | 'closed' | 'suspended'; status: 'open' | 'closed' | 'suspended';
deadline: Date;
teams: Array<string>; teams: Array<string>;
} }
export interface AssignedUser extends User {
time: number;
}
export type ReducedProject = Exclude<Project, 'teams'>;
export async function getProjects(): Promise<ReducedProject[]> {
try {
const response = await fetch(`${apiRoot}/project/`, { headers: getAuthHeader() });
if (response.ok) {
return (await response.json()).projects.map((project: any) => ({
...project,
deadline: new Date(project.deadline),
}));
} else {
throw new Error("Failed to get projects");
}
} catch (e) {
throw e;
}
}
export async function getProject(uuid: string): Promise<Project> {
try {
const response = await fetch(`${apiRoot}/project/${uuid}`, { headers: getAuthHeader() });
if (response.ok) {
const project = (await response.json()).project;
return {
...project,
deadline: new Date(project.deadline),
}
} else {
throw new Error("Failed to get project");
}
} catch (e) {
throw e;
}
}
export async function getProjectTasks(uuid: string): Promise<Task[]> {
try {
const response = await fetch(`${apiRoot}/project/${uuid}/tasks`, { headers: getAuthHeader() });
if (response.ok) {
return (await response.json()).tasks.map((task: any) => ({
...task,
edited: new Date(task.edited),
created: new Date(task.created),
}));
} else {
throw new Error("Failed to get project tasks");
}
} catch (e) {
throw e;
}
}
export async function getProjectAssignees(uuid: string): Promise<AssignedUser[]> {
try {
const response = await fetch(`${apiRoot}/project/${uuid}/assigned`, { headers: getAuthHeader() });
if (response.ok) {
return (await response.json()).assigned;
} else {
throw new Error("Failed to get project assignees");
}
} catch (e) {
throw e;
}
}
export async function getProjectWork(uuid: string): Promise<Work[]> {
try {
const response = await fetch(`${apiRoot}/project/${uuid}/work`, { headers: getAuthHeader() });
if (response.ok) {
return (await response.json()).work.map((work: any) => ({
...work,
started: new Date(work.started),
finished: new Date(work.finished),
}));
} else {
throw new Error("Failed to get project work");
}
} catch (e) {
throw e;
}
}
...@@ -3,7 +3,7 @@ import { apiRoot } from 'config'; ...@@ -3,7 +3,7 @@ import { apiRoot } from 'config';
import { getAuthHeader } from './auth'; import { getAuthHeader } from './auth';
import { User } from './user'; import { User } from './user';
import { Project } from './project'; import { ReducedProject } from './project';
import { Work } from './work'; import { Work } from './work';
export interface Team { export interface Team {
...@@ -21,8 +21,6 @@ export interface TeamMember extends User { ...@@ -21,8 +21,6 @@ export interface TeamMember extends User {
role: TeamRole; role: TeamRole;
} }
type TeamProject = Exclude<Project, 'teams'>;
export async function getTeams(): Promise<Team[]> { export async function getTeams(): Promise<Team[]> {
try { try {
const response = await fetch(`${apiRoot}/team/`, { headers: getAuthHeader() }); const response = await fetch(`${apiRoot}/team/`, { headers: getAuthHeader() });
...@@ -75,11 +73,14 @@ export async function getTeamRoles(uuid: string): Promise<TeamRole[]> { ...@@ -75,11 +73,14 @@ export async function getTeamRoles(uuid: string): Promise<TeamRole[]> {
} }
} }
export async function getTeamProjects(uuid: string): Promise<TeamProject[]> { export async function getTeamProjects(uuid: string): Promise<ReducedProject[]> {
try { try {
const response = await fetch(`${apiRoot}/team/${uuid}/projects`, { headers: getAuthHeader() }); const response = await fetch(`${apiRoot}/team/${uuid}/projects`, { headers: getAuthHeader() });
if (response.ok) { if (response.ok) {
return (await response.json()).projects; return (await response.json()).projects.map((project: any) => ({
...project,
deadline: new Date(project.deadline),
}));
} else { } else {
throw new Error("Failed to get team projects"); throw new Error("Failed to get team projects");
} }
...@@ -92,7 +93,11 @@ export async function getTeamWork(uuid: string): Promise<Work[]> { ...@@ -92,7 +93,11 @@ export async function getTeamWork(uuid: string): Promise<Work[]> {
try { try {
const response = await fetch(`${apiRoot}/team/${uuid}/work`, { headers: getAuthHeader() }); const response = await fetch(`${apiRoot}/team/${uuid}/work`, { headers: getAuthHeader() });
if (response.ok) { if (response.ok) {
return (await response.json()).work; return (await response.json()).work.map((work: any) => ({
...work,
started: new Date(work.started),
finished: new Date(work.finished),
}));
} else { } else {
throw new Error("Failed to get team work"); throw new Error("Failed to get team work");
} }
......
...@@ -56,7 +56,11 @@ export async function getUserWork(): Promise<Work> { ...@@ -56,7 +56,11 @@ export async function getUserWork(): Promise<Work> {
try { try {
const response = await fetch(`${apiRoot}/user/work`, { headers: getAuthHeader() }); const response = await fetch(`${apiRoot}/user/work`, { headers: getAuthHeader() });
if (response.ok) { if (response.ok) {
return (await response.json()).work; return (await response.json()).work.map((work: any) => ({
...work,
started: new Date(work.started),
finished: new Date(work.finished),
}));
} else { } else {
throw new Error("Failed to get user work"); throw new Error("Failed to get user work");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment