This commit is contained in:
PxlLoewe
2025-07-25 09:53:58 -07:00
parent 26e7966e19
commit 54e0bc0b12
2 changed files with 88 additions and 66 deletions

View File

@@ -7,55 +7,59 @@ export const handleParticipantFinished = async (
participant: Participant, participant: Participant,
user: User, user: User,
) => { ) => {
const discordAccount = await prisma.discordAccount.findFirst({ try {
where: { const discordAccount = await prisma.discordAccount.findFirst({
userId: user.id, 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,
},
},
});
if (discordAccount) {
await setStandardName({
memberId: discordAccount.discordId,
userId: user.id,
}); });
}
await sendCourseCompletedEmail(user.email, user, event);
await prisma.participant.update({ const badgedToAdd = event.finishedBadges.filter((badge) => {
where: { return !user.badges.includes(badge);
id: participant.id, });
}, const permissionsToAdd = event.finishedPermissions.filter((permission) => {
data: { return !user.permissions.includes(permission);
statusLog: { });
push: {
event: "Berechtigungen und Badges vergeben", await prisma.user.update({
timestamp: new Date(), where: {
user: "system", id: user.id,
},
data: {
badges: {
push: badgedToAdd,
},
permissions: {
push: permissionsToAdd,
}, },
}, },
}, });
});
if (discordAccount) {
await setStandardName({
memberId: discordAccount.discordId,
userId: user.id,
});
}
await sendCourseCompletedEmail(user.email, user, event);
await prisma.participant.update({
where: {
id: participant.id,
},
data: {
statusLog: {
push: {
event: "Berechtigungen und Badges vergeben",
timestamp: new Date(),
user: "system",
},
},
},
});
} catch (error) {
console.error("Error handling participant finished:", error);
}
}; };
export const handleParticipantEnrolled = async ( export const handleParticipantEnrolled = async (

View File

@@ -34,43 +34,61 @@ const initTransporter = () => {
initTransporter(); initTransporter();
export const sendCourseCompletedEmail = async (to: string, user: User, event: Event) => { export const sendCourseCompletedEmail = async (to: string, user: User, event: Event) => {
const emailHtml = await renderCourseCompleted({ user, event }); try {
const emailHtml = await renderCourseCompleted({ user, event });
if (!transporter) { if (!transporter) {
console.error("Transporter is not initialized"); console.error("Transporter is not initialized");
return; return;
}
await sendMail(to, `Kurs ${event.name} erfolgreich abgeschlossen`, emailHtml);
} catch (error) {
console.error("Error sending course completed email:", error);
} }
sendMail(to, `Kurs ${event.name} erfolgreich abgeschlossen`, emailHtml);
}; };
export const sendPasswordChanged = async (to: string, user: User, password: string) => { export const sendPasswordChanged = async (to: string, user: User, password: string) => {
const emailHtml = await renderPasswordChanged({ user, password }); try {
const emailHtml = await renderPasswordChanged({ user, password });
await sendMail(to, `Dein Passwort wurde geändert`, emailHtml); await sendMail(to, `Dein Passwort wurde geändert`, emailHtml);
} catch (error) {}
}; };
export const sendEmailVerification = async (to: string, user: User, code: string) => { export const sendEmailVerification = async (to: string, user: User, code: string) => {
const emailHtml = await renderVerificationCode({ try {
user, const emailHtml = await renderVerificationCode({
code, user,
}); code,
await sendMail(to, "Bestätige deine E-Mail-Adresse", emailHtml); });
await sendMail(to, "Bestätige deine E-Mail-Adresse", emailHtml);
} catch (error) {
console.error("Error sending email verification:", error);
}
}; };
export const sendBannEmail = async (to: string, user: User, staffName: string) => { export const sendBannEmail = async (to: string, user: User, staffName: string) => {
const emailHtml = await renderBannNotice({ try {
user, const emailHtml = await renderBannNotice({
staffName, user,
}); staffName,
await sendMail(to, "Deine Sperrung bei Virtual Air Rescue", emailHtml); });
await sendMail(to, "Deine Sperrung bei Virtual Air Rescue", emailHtml);
} catch (error) {
console.error("Error sending ban email:", error);
}
}; };
export const sendTimebannEmail = async (to: string, user: User, staffName: string) => { export const sendTimebannEmail = async (to: string, user: User, staffName: string) => {
const emailHtml = await renderTimeBanNotice({ try {
user, const emailHtml = await renderTimeBanNotice({
staffName, user,
}); staffName,
await sendMail(to, "Deine vorrübergehende Sperrung bei Virtual Air Rescue", emailHtml); });
await sendMail(to, "Deine vorrübergehende Sperrung bei Virtual Air Rescue", emailHtml);
} catch (error) {
console.error("Error sending time ban email:", error);
}
}; };
export const sendMail = async (to: string, subject: string, html: string) => export const sendMail = async (to: string, subject: string, html: string) =>