Handler and TS API for SignReport

This commit is contained in:
Imbus 2024-03-20 23:53:59 +01:00
parent b7523cf04d
commit ecce80babc
3 changed files with 38 additions and 8 deletions

View file

@ -89,13 +89,13 @@ func (gs *GState) SignReport(c *fiber.Ctx) error {
log.Info("Signing report for: ", projectManagerUsername)
// Extract report ID from the request query parameters
// reportID := c.Query("reportId")
rid := new(ReportId)
if err := c.BodyParser(rid); err != nil {
return err
// Extract report ID from the request
rid, err := strconv.Atoi(c.Params("reportId"))
if err != nil {
log.Info("Invalid report ID:", err)
return c.Status(400).SendString("Invalid report ID")
}
log.Info("Signing report for: ", rid.ReportId)
log.Info("Signing report for: ", rid)
// Get the project manager's ID
projectManagerID, err := gs.Db.GetUserId(projectManagerUsername)
@ -106,7 +106,7 @@ func (gs *GState) SignReport(c *fiber.Ctx) error {
log.Info("Project manager ID: ", projectManagerID)
// Call the database function to sign the weekly report
err = gs.Db.SignWeeklyReport(rid.ReportId, projectManagerID)
err = gs.Db.SignWeeklyReport(rid, projectManagerID)
if err != nil {
log.Info("Error signing weekly report:", err)
return c.Status(500).SendString(err.Error())

View file

@ -92,7 +92,7 @@ func main() {
server.Get("/api/project/:projectId", gs.GetProject)
server.Get("/api/project/getAllUsers", gs.GetAllUsersProject)
server.Get("/api/getWeeklyReport", gs.GetWeeklyReport)
server.Post("/api/signReport", gs.SignReport)
server.Post("/api/signReport/:reportId", gs.SignReport)
server.Put("/api/addUserToProject", gs.AddUserToProjectHandler)
server.Put("/api/changeUserName", gs.ChangeUserName)
server.Post("/api/promoteToAdmin", gs.PromoteToAdmin)

View file

@ -127,6 +127,11 @@ interface API {
* @returns {Promise<APIResponse<string[]>>} A promise resolving to an API response containing the list of users.
*/
getAllUsers(token: string): Promise<APIResponse<string[]>>;
/**
* Sign a report
*/
signReport(reportId: number, token: string): Promise<APIResponse<boolean>>;
}
/** An instance of the API */
@ -448,4 +453,29 @@ export const api: API = {
});
}
},
async signReport(
reportId: number,
token: string,
): Promise<APIResponse<boolean>> {
try {
const response = await fetch(`/api/signReport/${reportId}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + token,
},
});
if (!response.ok) {
return {
success: false,
message: "Failed to sign report:" + response.status,
};
} else {
return { success: true };
}
} catch (e) {
return { success: false, message: "Failed to sign report" };
}
},
};