diff --git a/src/components/High/AssignmentCard.tsx b/src/components/High/AssignmentCard.tsx new file mode 100644 index 00000000..6720c0e1 --- /dev/null +++ b/src/components/High/AssignmentCard.tsx @@ -0,0 +1,99 @@ +import { Session } from "@/hooks/useSessions"; +import { Assignment } from "@/interfaces/results"; +import { User } from "@/interfaces/user"; +import { sortByModuleName } from "@/utils/moduleUtils"; +import clsx from "clsx"; +import moment from "moment"; +import { useRouter } from "next/router"; +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 router = useRouter() + + 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) => ( + + ))} +
+ {!assignment.results.map((r) => r.user).includes(user.id) && ( + <> +
+ +
+ {!session && ( +
+ +
+ )} + {!!session && ( +
+ +
+ )} + + )} + {assignment.results.map((r) => r.user).includes(user.id) && ( + + )} +
+
+ ) +} diff --git a/src/components/Medium/SessionCard.tsx b/src/components/Medium/SessionCard.tsx index 6fdfb55c..5dd7cb8c 100644 --- a/src/components/Medium/SessionCard.tsx +++ b/src/components/Medium/SessionCard.tsx @@ -13,10 +13,12 @@ export default function SessionCard({ session, reload, loadSession, + disableDelete = false }: { session: Session; reload: () => void; loadSession: (session: Session) => Promise; + disableDelete?: boolean }) { const [isLoading, setIsLoading] = useState(false); @@ -95,7 +97,7 @@ export default function SessionCard({ + + + ); +} diff --git a/src/pages/record.tsx b/src/pages/record.tsx index 68c3edb4..5acf236b 100644 --- a/src/pages/record.tsx +++ b/src/pages/record.tsx @@ -3,17 +3,15 @@ import Head from "next/head"; import {withIronSessionSsr} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; import {Stat, User} from "@/interfaces/user"; -import {useEffect, useMemo, useRef, useState} from "react"; +import {useEffect, useMemo, useState} from "react"; import useFilterRecordsByUser from "@/hooks/useFilterRecordsByUser"; import {groupByDate} from "@/utils/stats"; import moment from "moment"; -import useUsers from "@/hooks/useUsers"; import useExamStore from "@/stores/examStore"; import {ToastContainer} from "react-toastify"; import Layout from "@/components/High/Layout"; import clsx from "clsx"; import {shouldRedirectHome} from "@/utils/navigation.disabled"; -import useAssignments from "@/hooks/useAssignments"; import {uuidv4} from "@firebase/util"; import {usePDFDownload} from "@/hooks/usePDFDownload"; import useRecordStore from "@/stores/recordStore"; @@ -23,7 +21,7 @@ import {useRouter} from "next/router"; import useTrainingContentStore from "@/stores/trainingContentStore"; import {Assignment} from "@/interfaces/results"; import {getEntitiesUsers, getUsers} from "@/utils/users.be"; -import {getAssignments, getAssignmentsByAssigner, getEntitiesAssignments} from "@/utils/assignments.be"; +import {getAssignments, getEntitiesAssignments} from "@/utils/assignments.be"; import useGradingSystem from "@/hooks/useGrading"; import { mapBy, redirect, serialize } from "@/utils"; import { getEntitiesWithRoles } from "@/utils/entities.be"; @@ -32,7 +30,6 @@ import { getGroups, getGroupsByEntities } from "@/utils/groups.be"; import { getGradingSystemByEntity } from "@/utils/grading.be"; import { Grading } from "@/interfaces"; import { EntityWithRoles } from "@/interfaces/entity"; -import { useListSearch } from "@/hooks/useListSearch"; import CardList from "@/components/High/CardList"; import { requestUser } from "@/utils/api"; diff --git a/src/utils/sessions.be.ts b/src/utils/sessions.be.ts index ef4e710c..082f40f3 100644 --- a/src/utils/sessions.be.ts +++ b/src/utils/sessions.be.ts @@ -3,10 +3,10 @@ import client from "@/lib/mongodb"; const db = client.db(process.env.MONGODB_DB); -export const getSessionsByUser = async (id: string, limit?: number) => +export const getSessionsByUser = async (id: string, limit = 0, filter = {}) => await db .collection("sessions") - .find({user: id}) + .find({user: id, ...filter}) .limit(limit || 0) .toArray();