From c8be2f1255be8fd55b535c23063a8f7bfc662856 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Thu, 5 Sep 2024 16:52:16 +0100 Subject: [PATCH] Prevented sessions from appearing when an assignment is done --- src/pages/api/sessions/index.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/pages/api/sessions/index.ts b/src/pages/api/sessions/index.ts index c5b30692..9b7fb3ec 100644 --- a/src/pages/api/sessions/index.ts +++ b/src/pages/api/sessions/index.ts @@ -4,6 +4,8 @@ import {app} from "@/firebase"; import {getFirestore, collection, getDocs, query, where, doc, setDoc, addDoc, getDoc} from "firebase/firestore"; import {withIronSessionApiRoute} from "iron-session/next"; import {sessionOptions} from "@/lib/session"; +import {Session} from "@/hooks/useSessions"; +import moment from "moment"; const db = getFirestore(app); @@ -24,12 +26,17 @@ async function get(req: NextApiRequest, res: NextApiResponse) { const q = user ? query(collection(db, "sessions"), where("user", "==", user)) : collection(db, "sessions"); const snapshot = await getDocs(q); + const sessions = snapshot.docs.map((doc) => ({ + id: doc.id, + ...doc.data(), + })) as Session[]; res.status(200).json( - snapshot.docs.map((doc) => ({ - id: doc.id, - ...doc.data(), - })), + sessions.filter((x) => { + if (!x.assignment) return true; + if (x.assignment.results.filter((y) => y.user === user).length > 0) return false; + return moment().isAfter(moment(x.assignment.endDate)); + }), ); }