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
 | 
						GetUserProjects(c *fiber.Ctx) error // To get all projects
 | 
				
			||||||
	SubmitWeeklyReport(c *fiber.Ctx) error
 | 
						SubmitWeeklyReport(c *fiber.Ctx) error
 | 
				
			||||||
	GetWeeklyReport(c *fiber.Ctx) error
 | 
						GetWeeklyReport(c *fiber.Ctx) error
 | 
				
			||||||
 | 
						SignReport(c *fiber.Ctx) error
 | 
				
			||||||
	// GetProject(c *fiber.Ctx) error           // To get a specific project
 | 
						// GetProject(c *fiber.Ctx) error           // To get a specific project
 | 
				
			||||||
	// UpdateProject(c *fiber.Ctx) error        // To update a project
 | 
						// UpdateProject(c *fiber.Ctx) error        // To update a project
 | 
				
			||||||
	// DeleteProject(c *fiber.Ctx) error        // To delete 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 the retrieved weekly report
 | 
				
			||||||
	return c.JSON(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) {
 | 
					      if (!response.ok) {
 | 
				
			||||||
        return { success: false, message: "Failed to register user" };
 | 
					        return {
 | 
				
			||||||
 | 
					          success: false,
 | 
				
			||||||
 | 
					          message: "Failed to register user: " + response.status,
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        const data = (await response.json()) as User;
 | 
					        // const data = (await response.json()) as User; // The API does not currently return the user
 | 
				
			||||||
        return { success: true, data };
 | 
					        return { success: true };
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    } catch (e) {
 | 
					    } 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 { api } from "../API/API";
 | 
				
			||||||
import Logo from "../assets/Logo.svg";
 | 
					import Logo from "../assets/Logo.svg";
 | 
				
			||||||
import Button from "./Button";
 | 
					import Button from "./Button";
 | 
				
			||||||
 | 
					import { useNavigate } from "react-router-dom";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function InputField(props: {
 | 
					function InputField(props: {
 | 
				
			||||||
  label: string;
 | 
					  label: string;
 | 
				
			||||||
| 
						 | 
					@ -31,12 +32,23 @@ function InputField(props: {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function Register(): JSX.Element {
 | 
					export default function Register(): JSX.Element {
 | 
				
			||||||
  const [username, setUsername] = useState("");
 | 
					  const [username, setUsername] = useState<string>();
 | 
				
			||||||
  const [password, setPassword] = useState("");
 | 
					  const [password, setPassword] = useState<string>();
 | 
				
			||||||
 | 
					  const [errMessage, setErrMessage] = useState<string>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const nav = useNavigate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const handleRegister = async (): Promise<void> => {
 | 
					  const handleRegister = async (): Promise<void> => {
 | 
				
			||||||
    const newUser: NewUser = { username: username, password };
 | 
					    const newUser: NewUser = {
 | 
				
			||||||
    await api.registerUser(newUser); // TODO: Handle errors
 | 
					      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 (
 | 
					  return (
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue