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