Files
var-monorepo/apps/hub-server/modules/event.ts

55 lines
1.1 KiB
TypeScript

import { Event, Participant, prisma, User } from "@repo/db";
import { sendCourseCompletedEmail } from "modules/mail";
export const handleParticipantFinished = async (
event: Event,
participant: Participant,
user: User,
) => {
const discordID = await prisma.discordAccount.findFirst({
where: {
userId: user.id,
},
});
const badgedToAdd = event.finishedBadges.filter((badge) => {
return !user.badges.includes(badge);
});
const permissionsToAdd = event.finishedPermissions.filter((permission) => {
return !user.permissions.includes(permission);
});
await prisma.user.update({
where: {
id: user.id,
},
data: {
badges: {
push: badgedToAdd,
},
permissions: {
push: permissionsToAdd,
},
},
});
//TODO: Send Discord Message
await sendCourseCompletedEmail(user.email, user, event);
await prisma.participant.update({
where: {
id: participant.id,
},
data: {
completetionWorkflowFinished: true,
statusLog: {
push: {
event: "Berechtigungen und Badges vergeben",
timestamp: new Date(),
user: "system",
},
},
},
});
};