From 61f48e4e9c15fcb00ad6f83ce8b961be4f1e18cf Mon Sep 17 00:00:00 2001
From: Hanen Alrwasheda <alrwasheda@mi.fu-berlin.de>
Date: Thu, 6 Jan 2022 14:20:14 +0100
Subject: [PATCH] showCurrentUser + updateCurrentUser Controllers

---
 .../userControllers.controllers.ts            | 65 +++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 server/src/controllers/userControllers.controllers.ts

diff --git a/server/src/controllers/userControllers.controllers.ts b/server/src/controllers/userControllers.controllers.ts
new file mode 100644
index 0000000..6db8d39
--- /dev/null
+++ b/server/src/controllers/userControllers.controllers.ts
@@ -0,0 +1,65 @@
+import Worker from "../db/models/Worker";
+import { Request, Response } from "express";
+
+//show current user GET
+const showCurrentUserController = async (req: Request, res: Response) => {
+  try {
+    if (!(res.locals.user.role === "coordinator")) {
+      return res
+        .status(403)
+        .json({ success: false, error: "MustBeCoordinator" });
+    }
+
+    //get current user (coordinator) data from DB
+    const currentUserData = await Worker.findAll({
+      where: {
+        role: "coordinator",
+      },
+    });
+    res.status(200).json({ success: true, result: currentUserData });
+  } catch (error) {
+    console.log("server error: ", error.message);
+    res.status(500).json({ success: false, error: "serverError!" });
+  }
+};
+
+//update current user PUT
+const updateCurrentUser = async (req: Request, res: Response) => {
+  try {
+    //check role
+    if (!(res.locals.user.role === "coordinator")) {
+      return res
+        .status(403)
+        .json({ success: false, error: "MustBeCoordinator" });
+    }
+
+    //take what ever in req.body is, and pass it to update()
+    const input = req.body; //Data are saved in the DB in camelCase
+
+    //update coordinator data
+    await Worker.update(input, {
+      where: {
+        role: "coordinator",
+      },
+    });
+
+    //send new coordinator-data back
+    const updatedWorker = await Worker.findAll({
+      where: {
+        role: "coordinator",
+      },
+    });
+
+    return res.status(200).json({ success: true, result: updatedWorker });
+  } catch (error) {
+    console.error("server error: ", error.message);
+    return res.status(500).json({ success: false, error: "serverError" });
+  }
+};
+
+const userControllers = {
+  showCurrentUserController,
+  updateCurrentUser,
+};
+
+export default userControllers;
-- 
GitLab