import styles from "./EventTask.module.css"; import { formatDateLetter } from "../../../../utils/date/formatDateLetter"; import Button from "../../../../components/ui/Button/Button"; import assign from "../../../../utils/tasks/assign"; import unAssign from "../../../../utils/tasks/unAssign"; import { useContext, useEffect, useState } from "react"; import isAssigned from "../../../../utils/tasks/isAssigned"; import Modal from "../../../../components/ui/Modal/Modal"; import { AuthContext } from "../../../../contexts/Auth/AuthContext"; import { EventDetailContext } from "../../../../contexts/EventDetail/EventDetailContext"; import DeleteTaskBtn from "../DeleteTaskBtn/DeleteTaskBtn"; import AssignUserBtn from "../AssignUserBtn/AssignUserBtn"; type EventTaskProps = { taskId: number; index: number; }; export default function EventTask({ taskId, index }: EventTaskProps) { const { update } = useContext(AuthContext) as any; const { tasks, eventInfo, updateEventInfo } = useContext(EventDetailContext) as any; const task = tasks?.find((t: any) => t.id === taskId); const eventId = eventInfo?.id; const [assigned, setAssigned] = useState(false); const [open, setOpen] = useState(false); const [title, setTitle] = useState(""); const [message, setMessage] = useState(""); async function checkAssign() { const data = await isAssigned(task.id); setAssigned(data?.data.assigned); } useEffect(() => { checkAssign(); }, []); const handleRegisterBtn = async () => { const res = await assign(task.id); switch (res.status) { case 200: update(); await updateEventInfo(eventId); setTitle("Inscription réussie"); setMessage(`Vous êtes maintenant inscrit à la tâche ${task.name}`); setOpen(true); setAssigned(true); break; case 409: setTitle("Erreur lors de l'inscription"); setMessage("Vous êtes déjà inscrit à cette tâche"); setOpen(true); break; case 403: setTitle("Erreur lors de l'inscription"); setMessage("Le nombre maximum d'inscription pour cette tâche à été atteint"); setOpen(true); break; } }; const handleUnassign = async () => { const res = await unAssign(task.id); switch (res.status) { case 200: update(); await updateEventInfo(eventId); setTitle("Désinscription réussie"); setMessage(`Vous n'êtes plus inscrit à la tâche ${task.name}`); setOpen(true); setAssigned(false); break; case 409: setTitle("Erreur lors de la désinscription"); setMessage(`Vous n'êtes pas inscrit à cette tâche`); setOpen(true); break; } }; return (
{task.name}

{formatDateLetter(task.start)} - {formatDateLetter(task.end)}

{task.description}

Participants = task.max_participants ? styles.badgeFull : task.users_count / task.max_participants >= 0.75 ? styles.badgeAlmost : styles.badgeOpen }`}> {task.users_count} / {task.max_participants}
= task.max_participants ? styles.fillFull : task.users_count / task.max_participants >= 0.75 ? styles.fillAlmost : styles.fillOpen }`} style={{ width: `${Math.min((task.users_count / task.max_participants) * 100, 100)}%` }} />
{assigned ? ( ) : ( )}
setOpen(false)} title={title}>

{message}

); }