From 6d5e9e2271516083acf991511c644cb8402b49f8 Mon Sep 17 00:00:00 2001 From: imnotrafa Date: Tue, 10 Sep 2024 11:54:55 -0400 Subject: [PATCH 1/5] Issue 477 --- CONTRIBUTORS.yml | 1 + .../modules/event/use-cases/event-reminder.ts | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 packages/core/src/modules/event/use-cases/event-reminder.ts diff --git a/CONTRIBUTORS.yml b/CONTRIBUTORS.yml index 321ab6d1b..5716513b5 100644 --- a/CONTRIBUTORS.yml +++ b/CONTRIBUTORS.yml @@ -47,3 +47,4 @@ - poughe - katlj - rafa1510 +- imnotrafa diff --git a/packages/core/src/modules/event/use-cases/event-reminder.ts b/packages/core/src/modules/event/use-cases/event-reminder.ts new file mode 100644 index 000000000..b8672b573 --- /dev/null +++ b/packages/core/src/modules/event/use-cases/event-reminder.ts @@ -0,0 +1,35 @@ +import { db } from '@oyster/db'; +import { type Event } from '@oyster/types'; +import { listEventAttendees } from '@/member-profile.server'; +import { sendEmail } from '@/modules/notification/use-cases/send-email'; +import { Email } from '../../../../../types/src/domain/types'; +import { send } from 'process'; + +export async function eventReminder(input: Event) { + //selects students who are undergrad + let RegisteredStudentIDs: string[] = []; + const eventAttendees = await listEventAttendees({ + select: ['eventAttendees.studentId', 'students.email'], + where: { + eventId: input.id, + }, + }); + //extrack student id for the event attendee + eventAttendees.forEach((attendee) => { + if (attendee.studentId) { + RegisteredStudentIDs.push(attendee.studentId); + } + }); + // filter down to just the undergrads that are not register for the event + const unregisteredStudents = await db + .selectFrom('students') + .select(['students.email']) + .where('educationLevel', '=', 'undergraduate') + .where('id', 'not in', RegisteredStudentIDs) + .execute(); + const unregisteredStudentsEmailList = unregisteredStudents.map( + (studentEmail) => studentEmail.email + ); + //list of unregistered student emails + return unregisteredStudentsEmailList; +} From 75db7924650f7d443ce775f483de2f7130b720b2 Mon Sep 17 00:00:00 2001 From: imnotrafa Date: Wed, 25 Sep 2024 11:59:11 -0400 Subject: [PATCH 2/5] Implemented sendEmail for every single unregistered student for given event --- .../modules/event/use-cases/event-reminder.ts | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/core/src/modules/event/use-cases/event-reminder.ts b/packages/core/src/modules/event/use-cases/event-reminder.ts index b8672b573..982066213 100644 --- a/packages/core/src/modules/event/use-cases/event-reminder.ts +++ b/packages/core/src/modules/event/use-cases/event-reminder.ts @@ -2,9 +2,7 @@ import { db } from '@oyster/db'; import { type Event } from '@oyster/types'; import { listEventAttendees } from '@/member-profile.server'; import { sendEmail } from '@/modules/notification/use-cases/send-email'; -import { Email } from '../../../../../types/src/domain/types'; -import { send } from 'process'; - +import { StudentActivatedEmail } from '@oyster/email-templates'; export async function eventReminder(input: Event) { //selects students who are undergrad let RegisteredStudentIDs: string[] = []; @@ -20,16 +18,23 @@ export async function eventReminder(input: Event) { RegisteredStudentIDs.push(attendee.studentId); } }); - // filter down to just the undergrads that are not register for the event + //filter down to just the undergrads that are not register for the event const unregisteredStudents = await db .selectFrom('students') - .select(['students.email']) + .select(['students.email', 'students.firstName']) .where('educationLevel', '=', 'undergraduate') .where('id', 'not in', RegisteredStudentIDs) .execute(); - const unregisteredStudentsEmailList = unregisteredStudents.map( - (studentEmail) => studentEmail.email - ); - //list of unregistered student emails - return unregisteredStudentsEmailList; + + //Must change the name of the email template being used based on the prupose of the function + //TODO: create an email tenplate for event reminders + unregisteredStudents.forEach((student) => { + sendEmail({ + name: 'application-accepted', + to: student.email, + data: { + firstName: student.firstName, + }, + }); + }); } From acac0565983195e23f15e60c30a7f77a69949f6f Mon Sep 17 00:00:00 2001 From: Tomas Salgado <91388965+tomas-salgado@users.noreply.github.com> Date: Thu, 12 Dec 2024 02:23:15 -0500 Subject: [PATCH 3/5] keep extra line at EOF in CONTRIBUTORS.yml --- CONTRIBUTORS.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTORS.yml b/CONTRIBUTORS.yml index 83c4bb89e..7e3bb3bb1 100644 --- a/CONTRIBUTORS.yml +++ b/CONTRIBUTORS.yml @@ -56,4 +56,4 @@ - Ekene-Azubuko - Dharld - rod608 -- mdg258 \ No newline at end of file +- mdg258 From f3d38766dca5bfc97a0f8ea8ad9fa9d8ae1927cf Mon Sep 17 00:00:00 2001 From: Tomas Salgado <91388965+tomas-salgado@users.noreply.github.com> Date: Tue, 17 Dec 2024 11:34:03 -0500 Subject: [PATCH 4/5] Rename event-reminder.ts to send-event-reminder.ts --- .../event/use-cases/{event-reminder.ts => send-event-reminder.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/core/src/modules/event/use-cases/{event-reminder.ts => send-event-reminder.ts} (100%) diff --git a/packages/core/src/modules/event/use-cases/event-reminder.ts b/packages/core/src/modules/event/use-cases/send-event-reminder.ts similarity index 100% rename from packages/core/src/modules/event/use-cases/event-reminder.ts rename to packages/core/src/modules/event/use-cases/send-event-reminder.ts From 870dd4d3da9157178e310bd44d7fb4ea1c4722f1 Mon Sep 17 00:00:00 2001 From: Tomas Salgado <91388965+tomas-salgado@users.noreply.github.com> Date: Tue, 17 Dec 2024 11:35:13 -0500 Subject: [PATCH 5/5] Update send-event-reminder.ts --- .../core/src/modules/event/use-cases/send-event-reminder.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/modules/event/use-cases/send-event-reminder.ts b/packages/core/src/modules/event/use-cases/send-event-reminder.ts index 982066213..403d68a9f 100644 --- a/packages/core/src/modules/event/use-cases/send-event-reminder.ts +++ b/packages/core/src/modules/event/use-cases/send-event-reminder.ts @@ -4,6 +4,7 @@ import { listEventAttendees } from '@/member-profile.server'; import { sendEmail } from '@/modules/notification/use-cases/send-email'; import { StudentActivatedEmail } from '@oyster/email-templates'; export async function eventReminder(input: Event) { + //selects students who are undergrad let RegisteredStudentIDs: string[] = []; const eventAttendees = await listEventAttendees({ @@ -12,12 +13,14 @@ export async function eventReminder(input: Event) { eventId: input.id, }, }); - //extrack student id for the event attendee + + //extract student id for the event attendee eventAttendees.forEach((attendee) => { if (attendee.studentId) { RegisteredStudentIDs.push(attendee.studentId); } }); + //filter down to just the undergrads that are not register for the event const unregisteredStudents = await db .selectFrom('students')