From 539f42d6716e32530fc397226fb270ea14de55e7 Mon Sep 17 00:00:00 2001
From: T'JAMPENS QUENTIN p2406187
Date: Sun, 15 Mar 2026 16:12:33 +0100
Subject: [PATCH] Assign other user by admin account
---
.../AssignUserBtn/AssignUserBtn.tsx | 25 ++++++++++++++++---
src/utils/tasks/assignOtherUser.ts | 13 ++++++++++
src/utils/tasks/unAssignOtherUser.ts | 13 ++++++++++
3 files changed, 47 insertions(+), 4 deletions(-)
create mode 100644 src/utils/tasks/assignOtherUser.ts
create mode 100644 src/utils/tasks/unAssignOtherUser.ts
diff --git a/src/pages/EventDetail/components/AssignUserBtn/AssignUserBtn.tsx b/src/pages/EventDetail/components/AssignUserBtn/AssignUserBtn.tsx
index 44bdaeb..9a9ad3d 100644
--- a/src/pages/EventDetail/components/AssignUserBtn/AssignUserBtn.tsx
+++ b/src/pages/EventDetail/components/AssignUserBtn/AssignUserBtn.tsx
@@ -7,6 +7,8 @@ import Loading from "../../../../components/ui/Loading/Loading";
import getUserById from "../../../../utils/users/getUserById";
import styles from "./AssignUserBtn.module.css";
import {AuthContext} from "../../../../contexts/Auth/AuthContext";
+import assignOtherUser from "../../../../utils/tasks/assignOtherUser";
+import unAssignOtherUser from "../../../../utils/tasks/unAssignOtherUser";
interface AssignUserBtnProps {
taskId: string | number;
@@ -50,8 +52,17 @@ export default function AssignUserBtn({ taskId }: AssignUserBtnProps): ReactNode
})();
}, []);
- const handleAssign = async (user: User) => {
+ const isUserAssigned = (u: User): boolean =>
+ u.tasks.some(t => t.id === taskId);
+ const handleAssign = async (selectedUser: User) => {
+ await assignOtherUser(taskId as number, selectedUser.id);
+ setOpen(false);
+ };
+
+ const handleUnassign = async (selectedUser: User) => {
+ await unAssignOtherUser(taskId as number, selectedUser.id);
+ setOpen(false);
};
return <>
@@ -65,9 +76,15 @@ export default function AssignUserBtn({ taskId }: AssignUserBtnProps): ReactNode
{user.name} {user.lastname}
-
+ {isUserAssigned(user) ? (
+
+ ) : (
+
+ )}
))}
diff --git a/src/utils/tasks/assignOtherUser.ts b/src/utils/tasks/assignOtherUser.ts
new file mode 100644
index 0000000..189c06b
--- /dev/null
+++ b/src/utils/tasks/assignOtherUser.ts
@@ -0,0 +1,13 @@
+import fetchWrapper from "../fetchWrapper.js";
+import getXSRFToken from "../getXSRF.js";
+
+export default async function assignOtherUser(taskId: number, userId: number): Promise {
+ const csrfToken = await getXSRFToken();
+
+ return fetchWrapper(
+ `/api/events/task/assign/${userId}`,
+ {task_id: taskId},
+ "POST",
+ {"X-XSRF-TOKEN": csrfToken}
+ );
+}
diff --git a/src/utils/tasks/unAssignOtherUser.ts b/src/utils/tasks/unAssignOtherUser.ts
new file mode 100644
index 0000000..0781dca
--- /dev/null
+++ b/src/utils/tasks/unAssignOtherUser.ts
@@ -0,0 +1,13 @@
+import fetchWrapper from "../fetchWrapper.js";
+import getXSRFToken from "../getXSRF.js";
+
+export default async function unAssignOtherUser(taskId: number, userId: number): Promise {
+ const csrfToken = await getXSRFToken();
+
+ return fetchWrapper(
+ `/api/events/task/unassign/${userId}`,
+ {task_id: taskId},
+ "POST",
+ {"X-XSRF-TOKEN": csrfToken}
+ );
+}
\ No newline at end of file