From 6fc20a66ef7fd8d4a01edd94932ad488da67798e Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Fri, 7 Mar 2025 14:42:34 -0700 Subject: [PATCH] changed ui package --- apps/hub-server/helper/event.ts | 11 -------- apps/hub-server/modules/chron.ts | 45 ++++++++++++++------------------ apps/hub-server/modules/event.ts | 41 +++++++++++++++++++++++++++++ packages/ui/package.json | 3 ++- packages/ui/src/helper/index.ts | 1 + 5 files changed, 64 insertions(+), 37 deletions(-) delete mode 100644 apps/hub-server/helper/event.ts create mode 100644 apps/hub-server/modules/event.ts create mode 100644 packages/ui/src/helper/index.ts diff --git a/apps/hub-server/helper/event.ts b/apps/hub-server/helper/event.ts deleted file mode 100644 index 11537fd7..00000000 --- a/apps/hub-server/helper/event.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Event, Participant } from "@repo/db"; - -export const participantCompleted = ( - event: Event, - participant: Participant, -) => { - if (event.finisherMoodleCourseId && !participant.finisherMoodleCurseCompleted) - return false; - if (event.hasPresenceEvents && !participant.attended) return false; - return true; -}; diff --git a/apps/hub-server/modules/chron.ts b/apps/hub-server/modules/chron.ts index adeabdff..52350462 100644 --- a/apps/hub-server/modules/chron.ts +++ b/apps/hub-server/modules/chron.ts @@ -1,7 +1,7 @@ import { getMoodleCourseCompletionStatus, getMoodleUserById } from "./moodle"; import { CronJob } from "cron"; import { prisma } from "@repo/db"; -import { participantCompleted } from "helper/event"; +import { eventCompleted } from "@repo/ui/helper"; const syncMoodleIds = async () => { try { @@ -72,35 +72,30 @@ const updateParticipantMoodleResults = async () => { }, }, }); - if (participantCompleted(p.Event, p)) { - // Event is completed, give relating permissions - await prisma.user.update({ - where: { - id: p.userId, - }, - data: { - permissions: { - push: p.Event.finishedPermissions, - }, - badges: { - push: p.Event.finishedBadges, - }, - }, - }); - await prisma.participant.update({ - where: { - id: p.id, - }, - data: { - finished: true, - }, - }); - } } }), ); }; +export const checkedFinishedParticipants = async () => { + const participantsPending = await prisma.participant.findMany({ + where: { + finished: false, + }, + include: { + Event: true, + User: true, + }, + }); + + participantsPending.forEach(async (p) => { + if (!p.User) return; + if (!p.User.moodleId) return; + + const completed = eventCompleted(p.Event, p); + }); +}; + CronJob.from({ cronTime: "0 * * * *", onTick: syncMoodleIds, start: true }); CronJob.from({ cronTime: "*/5 * * * *", diff --git a/apps/hub-server/modules/event.ts b/apps/hub-server/modules/event.ts new file mode 100644 index 00000000..979568d5 --- /dev/null +++ b/apps/hub-server/modules/event.ts @@ -0,0 +1,41 @@ +import { Event, Participant, prisma, User } from "@repo/db"; + +export const handleParticipantFinished = async ( + event: Event, + participant: Participant, + user: User, +) => { + const discordID = prisma.discordAccount.findFirst({ + where: { + userId: user.id, + }, + }); + + prisma.user.update({ + where: { + id: user.id, + }, + data: { + badges: { + push: event.finishedBadges, + }, + permissions: event.finishedPermissions, + }, + }); + + prisma.participant.update({ + where: { + id: participant.id, + }, + data: { + finished: true, + statusLog: { + push: { + event: "Event finished", + timestamp: new Date(), + user: "system", + }, + }, + }, + }); +}; diff --git a/packages/ui/package.json b/packages/ui/package.json index b3d2bf57..cb47701c 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -3,7 +3,8 @@ "version": "0.0.0", "private": true, "exports": { - ".": "./src/index.ts" + ".": "./src/index.ts", + "./helper": "./src/helper/index.ts" }, "scripts": { "lint": "eslint . --max-warnings 0", diff --git a/packages/ui/src/helper/index.ts b/packages/ui/src/helper/index.ts new file mode 100644 index 00000000..6bcf8f16 --- /dev/null +++ b/packages/ui/src/helper/index.ts @@ -0,0 +1 @@ +export * from "./event";