From 54e0bc0b12c94a023a53aa16ed5451f2ff1ec416 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Fri, 25 Jul 2025 09:53:58 -0700 Subject: [PATCH] fixed #104 --- apps/hub-server/modules/event.ts | 92 +++++++++++++++++--------------- apps/hub-server/modules/mail.ts | 62 +++++++++++++-------- 2 files changed, 88 insertions(+), 66 deletions(-) diff --git a/apps/hub-server/modules/event.ts b/apps/hub-server/modules/event.ts index c5bead02..363c0b1b 100644 --- a/apps/hub-server/modules/event.ts +++ b/apps/hub-server/modules/event.ts @@ -7,55 +7,59 @@ export const handleParticipantFinished = async ( participant: Participant, user: User, ) => { - const discordAccount = 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, + try { + const discordAccount = await prisma.discordAccount.findFirst({ + where: { + userId: user.id, }, - 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", + 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({ + 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 ( diff --git a/apps/hub-server/modules/mail.ts b/apps/hub-server/modules/mail.ts index 29bd2907..d8d0beeb 100644 --- a/apps/hub-server/modules/mail.ts +++ b/apps/hub-server/modules/mail.ts @@ -34,43 +34,61 @@ const initTransporter = () => { initTransporter(); 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) { - console.error("Transporter is not initialized"); - return; + if (!transporter) { + console.error("Transporter is not initialized"); + 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) => { - 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) => { - const emailHtml = await renderVerificationCode({ - user, - code, - }); - await sendMail(to, "Bestätige deine E-Mail-Adresse", emailHtml); + try { + const emailHtml = await renderVerificationCode({ + user, + code, + }); + 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) => { - const emailHtml = await renderBannNotice({ - user, - staffName, - }); - await sendMail(to, "Deine Sperrung bei Virtual Air Rescue", emailHtml); + try { + const emailHtml = await renderBannNotice({ + user, + staffName, + }); + 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) => { - const emailHtml = await renderTimeBanNotice({ - user, - staffName, - }); - await sendMail(to, "Deine vorrübergehende Sperrung bei Virtual Air Rescue", emailHtml); + try { + const emailHtml = await renderTimeBanNotice({ + user, + staffName, + }); + 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) =>