Merge branch 'frontend' into gruppPP
This commit is contained in:
		
						commit
						e4a0246b84
					
				
					 37 changed files with 772 additions and 240 deletions
				
			
		|  | @ -5,6 +5,7 @@ import { | |||
|   Project, | ||||
|   NewProject, | ||||
|   UserProjectMember, | ||||
|   WeeklyReport, | ||||
| } from "../Types/goTypes"; | ||||
| 
 | ||||
| // This type of pattern should be hard to misuse
 | ||||
|  | @ -21,10 +22,17 @@ interface API { | |||
|   registerUser(user: NewUser): Promise<APIResponse<User>>; | ||||
|   /** Remove a user */ | ||||
|   removeUser(username: string, token: string): Promise<APIResponse<User>>; | ||||
|   /** Check if user is project manager */ | ||||
|   checkIfProjectManager( | ||||
|     username: string, | ||||
|     projectName: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<boolean>>; | ||||
|   /** Login */ | ||||
|   login(NewUser: NewUser): Promise<APIResponse<string>>; | ||||
|   /** Renew the token */ | ||||
|   renewToken(token: string): Promise<APIResponse<string>>; | ||||
|   /** Promote user to admin */ | ||||
|   /** Create a project */ | ||||
|   createProject( | ||||
|     project: NewProject, | ||||
|  | @ -41,7 +49,19 @@ interface API { | |||
|     projectName: string, | ||||
|     week: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<NewWeeklyReport>>; | ||||
|   ): Promise<APIResponse<WeeklyReport>>; | ||||
|   /** | ||||
|    * Returns all the weekly reports for a user in a particular project | ||||
|    * The username is derived from the token | ||||
|    * | ||||
|    * @param {string} projectName The name of the project | ||||
|    * @param {string} token The token of the user | ||||
|    * @returns {APIResponse<WeeklyReport[]>} A list of weekly reports | ||||
|    */ | ||||
|   getWeeklyReportsForUser( | ||||
|     projectName: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<WeeklyReport[]>>; | ||||
|   /** Gets all the projects of a user*/ | ||||
|   getUserProjects(token: string): Promise<APIResponse<Project[]>>; | ||||
|   /** Gets a project from id*/ | ||||
|  | @ -109,6 +129,35 @@ export const api: API = { | |||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   async checkIfProjectManager( | ||||
|     username: string, | ||||
|     projectName: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<boolean>> { | ||||
|     try { | ||||
|       const response = await fetch("/api/checkIfProjectManager", { | ||||
|         method: "GET", | ||||
|         headers: { | ||||
|           "Content-Type": "application/json", | ||||
|           Authorization: "Bearer " + token, | ||||
|         }, | ||||
|         body: JSON.stringify({ username, projectName }), | ||||
|       }); | ||||
| 
 | ||||
|       if (!response.ok) { | ||||
|         return { | ||||
|           success: false, | ||||
|           message: "Failed to check if project manager", | ||||
|         }; | ||||
|       } else { | ||||
|         const data = (await response.json()) as boolean; | ||||
|         return { success: true, data }; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       return { success: false, message: "fuck" }; | ||||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   async createProject( | ||||
|     project: NewProject, | ||||
|     token: string, | ||||
|  | @ -218,7 +267,7 @@ export const api: API = { | |||
|     projectName: string, | ||||
|     week: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<NewWeeklyReport>> { | ||||
|   ): Promise<APIResponse<WeeklyReport>> { | ||||
|     try { | ||||
|       const response = await fetch("/api/getWeeklyReport", { | ||||
|         method: "GET", | ||||
|  | @ -232,7 +281,7 @@ export const api: API = { | |||
|       if (!response.ok) { | ||||
|         return { success: false, message: "Failed to get weekly report" }; | ||||
|       } else { | ||||
|         const data = (await response.json()) as NewWeeklyReport; | ||||
|         const data = (await response.json()) as WeeklyReport; | ||||
|         return { success: true, data }; | ||||
|       } | ||||
|     } catch (e) { | ||||
|  | @ -240,6 +289,38 @@ export const api: API = { | |||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   async getWeeklyReportsForUser( | ||||
|     projectName: string, | ||||
|     token: string, | ||||
|   ): Promise<APIResponse<WeeklyReport[]>> { | ||||
|     try { | ||||
|       const response = await fetch(`/api/getWeeklyReportsUser/${projectName}`, { | ||||
|         method: "GET", | ||||
|         headers: { | ||||
|           "Content-Type": "application/json", | ||||
|           Authorization: "Bearer " + token, | ||||
|         }, | ||||
|       }); | ||||
| 
 | ||||
|       if (!response.ok) { | ||||
|         return { | ||||
|           success: false, | ||||
|           message: | ||||
|             "Failed to get weekly reports for project: Response code " + | ||||
|             response.status, | ||||
|         }; | ||||
|       } else { | ||||
|         const data = (await response.json()) as WeeklyReport[]; | ||||
|         return { success: true, data }; | ||||
|       } | ||||
|     } catch (e) { | ||||
|       return { | ||||
|         success: false, | ||||
|         message: "Failed to get weekly reports for project, unknown error", | ||||
|       }; | ||||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   async login(NewUser: NewUser): Promise<APIResponse<string>> { | ||||
|     try { | ||||
|       const response = await fetch("/api/login", { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Peter KW
						Peter KW