Moodle-überprüfungs option für admins hinzugefügt

This commit is contained in:
PxlLoewe
2025-06-24 23:11:41 -07:00
parent d23ea67321
commit 86dcf15605
3 changed files with 113 additions and 37 deletions

View File

@@ -2,6 +2,7 @@ import { prisma } from "@repo/db";
import { Router } from "express";
import { eventCompleted } from "helper/events";
import { handleParticipantEnrolled, handleParticipantFinished } from "modules/event";
import { getMoodleCourseCompletionStatus } from "modules/moodle";
const router: Router = Router();
@@ -38,6 +39,43 @@ router.post("/handle-participant-finished", async (req, res) => {
res.status(200).json({ message: "Participant finished successfully" });
});
router.post("/check-moodle-results", async (req, res) => {
const { participantId } = req.body;
if (!participantId) {
res.status(400).json({ error: "Participant ID is required" });
return;
}
const participant = await prisma.participant.findUnique({
where: {
id: typeof participantId == "string" ? parseInt(participantId) : participantId,
},
include: {
Event: true,
User: true,
},
});
if (!participant) {
res.status(404).json({ error: "Teilnehmer nicht gefunden" });
return;
}
if (!participant.User || !participant.User.moodleId) {
res.status(400).json({ error: "Teilnehmer hat keine Moodle-ID" });
return;
}
const quizzResult = await getMoodleCourseCompletionStatus(
participant.User.moodleId.toString(),
participant.Event.finisherMoodleCourseId!,
);
if (quizzResult?.completionstatus?.completed === true) {
await handleParticipantFinished(participant.Event, participant, participant.User);
res
.status(200)
.json({ message: "Nutzer hat das Moodle-event abgeschlossen, workflow ausgeführt" });
} else {
res.status(200).json({ message: "Nutzer hat das Moodle-event noch nicht abgeschlossen" });
}
});
router.post("/handle-participant-enrolled", async (req, res) => {
const { participantId } = req.body;
if (!participantId) {