74 lines
2.1 KiB
TypeScript
74 lines
2.1 KiB
TypeScript
import { prisma } from "@repo/db";
|
|
import { Router } from "express";
|
|
import { eventCompleted } from "helper/events";
|
|
import { handleParticipantEnrolled, handleParticipantFinished } from "modules/event";
|
|
|
|
const router: Router = Router();
|
|
|
|
router.post("/handle-participant-finished", 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: {
|
|
include: {
|
|
discordAccounts: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
console.log("Handeling Participant-completed", participant?.User.publicId);
|
|
if (!participant) {
|
|
res.status(404).json({ error: "Participant not found" });
|
|
return;
|
|
}
|
|
const completed = eventCompleted(participant.Event, participant);
|
|
if (!completed) {
|
|
res.status(400).json({ error: "Event not completed" });
|
|
return;
|
|
}
|
|
await handleParticipantFinished(participant.Event, participant, participant.User);
|
|
res.status(200).json({ message: "Participant finished successfully" });
|
|
});
|
|
|
|
router.post("/handle-participant-enrolled", 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: {
|
|
include: {
|
|
discordAccounts: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
if (!participant) {
|
|
res.status(404).json({ error: "Participant not found" });
|
|
return;
|
|
}
|
|
const completed = eventCompleted(participant.Event, participant);
|
|
if (completed) {
|
|
res.status(400).json({ error: "Event already completed" });
|
|
return;
|
|
}
|
|
await handleParticipantEnrolled(participant.Event, participant, participant.User);
|
|
res.status(200).json({ message: "Participant enrolled successfully" });
|
|
});
|
|
|
|
export default router;
|