import { Session } from "@/hooks/useSessions"; import { Assignment } from "@/interfaces/results"; import { User } from "@/interfaces/user"; import { activeAssignmentFilter, futureAssignmentFilter, } from "@/utils/assignments"; import { sortByModuleName } from "@/utils/moduleUtils"; import clsx from "clsx"; import moment from "moment"; import { useRouter } from "next/router"; import { useMemo } from "react"; import Button from "../Low/Button"; import ModuleBadge from "../ModuleBadge"; interface Props { assignment: Assignment; user: User; session?: Session; startAssignment: (assignment: Assignment) => void; resumeAssignment: (session: Session) => void; } export default function AssignmentCard({ user, assignment, session, startAssignment, resumeAssignment, }: Props) { const hasBeenSubmitted = useMemo( () => assignment.results.map((r) => r.user).includes(user.id), [assignment.results, user.id] ); return (
r.user).includes(user.id) && "border-mti-green-light" )} key={assignment.id} >

{assignment.name}

{moment(assignment.startDate).format("DD/MM/YY, HH:mm")} - {moment(assignment.endDate).format("DD/MM/YY, HH:mm")}
{assignment.exams .filter((e) => e.assignee === user.id) .map((e) => e.module) .sort(sortByModuleName) .map((module) => ( ))}
{futureAssignmentFilter(assignment) && !hasBeenSubmitted && ( )} {activeAssignmentFilter(assignment) && !hasBeenSubmitted && ( <>
{!session && (
)} {!!session && (
)} )} {hasBeenSubmitted && ( )}
); }