Merge branch 'dev' into frontend
This commit is contained in:
commit
b45a20c9f5
4 changed files with 55 additions and 8 deletions
|
@ -16,6 +16,7 @@ type GlobalState interface {
|
|||
GetUserProjects(c *fiber.Ctx) error // To get all projects
|
||||
SubmitWeeklyReport(c *fiber.Ctx) error
|
||||
GetWeeklyReport(c *fiber.Ctx) error
|
||||
SignReport(c *fiber.Ctx) error
|
||||
// GetProject(c *fiber.Ctx) error // To get a specific project
|
||||
// UpdateProject(c *fiber.Ctx) error // To update a project
|
||||
// DeleteProject(c *fiber.Ctx) error // To delete a project
|
||||
|
|
|
@ -60,3 +60,31 @@ func (gs *GState) GetWeeklyReport(c *fiber.Ctx) error {
|
|||
// Return the retrieved weekly report
|
||||
return c.JSON(report)
|
||||
}
|
||||
|
||||
func (gs *GState) SignReport(c *fiber.Ctx) error {
|
||||
// Extract the necessary parameters from the token
|
||||
user := c.Locals("user").(*jwt.Token)
|
||||
claims := user.Claims.(jwt.MapClaims)
|
||||
managerUsername := claims["name"].(string)
|
||||
|
||||
// Extract the report ID and project manager ID from request parameters
|
||||
reportID, err := strconv.Atoi(c.Params("reportId"))
|
||||
if err != nil {
|
||||
return c.Status(400).SendString("Invalid report ID")
|
||||
}
|
||||
|
||||
// Call the database function to get the project manager ID
|
||||
managerID, err := gs.Db.GetUserId(managerUsername)
|
||||
if err != nil {
|
||||
return c.Status(500).SendString("Failed to get project manager ID")
|
||||
}
|
||||
|
||||
// Call the database function to sign the weekly report
|
||||
err = gs.Db.SignWeeklyReport(reportID, managerID)
|
||||
if err != nil {
|
||||
return c.Status(500).SendString("Failed to sign the weekly report: " + err.Error())
|
||||
}
|
||||
|
||||
// Return success response
|
||||
return c.Status(200).SendString("Weekly report signed successfully")
|
||||
}
|
||||
|
|
|
@ -54,13 +54,19 @@ export const api: API = {
|
|||
});
|
||||
|
||||
if (!response.ok) {
|
||||
return { success: false, message: "Failed to register user" };
|
||||
return {
|
||||
success: false,
|
||||
message: "Failed to register user: " + response.status,
|
||||
};
|
||||
} else {
|
||||
const data = (await response.json()) as User;
|
||||
return { success: true, data };
|
||||
// const data = (await response.json()) as User; // The API does not currently return the user
|
||||
return { success: true };
|
||||
}
|
||||
} catch (e) {
|
||||
return { success: false, message: "Failed to register user" };
|
||||
return {
|
||||
success: false,
|
||||
message: "Unknown error while registering user",
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ import { NewUser } from "../Types/goTypes";
|
|||
import { api } from "../API/API";
|
||||
import Logo from "../assets/Logo.svg";
|
||||
import Button from "./Button";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
function InputField(props: {
|
||||
label: string;
|
||||
|
@ -31,12 +32,23 @@ function InputField(props: {
|
|||
}
|
||||
|
||||
export default function Register(): JSX.Element {
|
||||
const [username, setUsername] = useState("");
|
||||
const [password, setPassword] = useState("");
|
||||
const [username, setUsername] = useState<string>();
|
||||
const [password, setPassword] = useState<string>();
|
||||
const [errMessage, setErrMessage] = useState<string>();
|
||||
|
||||
const nav = useNavigate();
|
||||
|
||||
const handleRegister = async (): Promise<void> => {
|
||||
const newUser: NewUser = { username: username, password };
|
||||
await api.registerUser(newUser); // TODO: Handle errors
|
||||
const newUser: NewUser = {
|
||||
userName: username ?? "",
|
||||
password: password ?? "",
|
||||
};
|
||||
const response = await api.registerUser(newUser);
|
||||
if (response.success) {
|
||||
nav("/"); // Instantly navigate to the login page
|
||||
} else {
|
||||
setErrMessage(response.message ?? "Unknown error");
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
|
|
Loading…
Add table
Reference in a new issue