diff --git a/backend/internal/handlers/handlers_report_related.go b/backend/internal/handlers/handlers_report_related.go index fcba523..f99d4d2 100644 --- a/backend/internal/handlers/handlers_report_related.go +++ b/backend/internal/handlers/handlers_report_related.go @@ -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()) diff --git a/backend/main.go b/backend/main.go index ff6b94e..b02de58 100644 --- a/backend/main.go +++ b/backend/main.go @@ -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) diff --git a/frontend/src/API/API.ts b/frontend/src/API/API.ts index 0859748..9c65ca5 100644 --- a/frontend/src/API/API.ts +++ b/frontend/src/API/API.ts @@ -127,6 +127,11 @@ interface API { * @returns {Promise>} A promise resolving to an API response containing the list of users. */ getAllUsers(token: string): Promise>; + + /** + * Sign a report + */ + signReport(reportId: number, token: string): Promise>; } /** An instance of the API */ @@ -448,4 +453,29 @@ export const api: API = { }); } }, + + async signReport( + reportId: number, + token: string, + ): Promise> { + 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" }; + } + }, };