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