From 30222e719910ee2b7e3c2f2107909de734ad1e96 Mon Sep 17 00:00:00 2001 From: Griffin Cooper <72273901+gcooper407@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:30:46 -0400 Subject: [PATCH 1/3] #2743: user's availability calendar now reflects RSVP'd meetings --- .../src/services/design-reviews.services.ts | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/backend/src/services/design-reviews.services.ts b/src/backend/src/services/design-reviews.services.ts index 0e84e1f3e6..5bbad03d4e 100644 --- a/src/backend/src/services/design-reviews.services.ts +++ b/src/backend/src/services/design-reviews.services.ts @@ -396,6 +396,76 @@ export default class DesignReviewsService { updatedDesignReview.wbsElement ); } + + // Mark all attendees as unavailable during the scheduled meeting time + for (const member of updatedDesignReview.confirmedMembers) { + let userSettings = await prisma.schedule_Settings.findUnique({ + where: { userId: member.userId }, + ...getUserScheduleSettingsQueryArgs() + }); + + if (!userSettings) { + userSettings = await prisma.schedule_Settings.create({ + data: { + userId: member.userId, + availabilities: { + createMany: { + data: [ + { + availability: [], + dateSet: dateScheduled + } + ] + } + }, + personalGmail: '', + personalZoomLink: '' + }, + ...getUserScheduleSettingsQueryArgs() + }); + } + + // Check if user has availability already for the scheduled date + // TODO: Due to the off-by-one date bug, need to adjust one day from the scheduled date + const existingAvailability = userSettings.availabilities.find((availability) => { + const availabilityDate = new Date(availability.dateSet); + const scheduledDate = new Date(updatedDesignReview.dateScheduled); + // Subtract one day from scheduledDate + const dayAfterScheduled = new Date(scheduledDate); + dayAfterScheduled.setDate(scheduledDate.getDate() + 1); + return availabilityDate.toDateString() === dayAfterScheduled.toDateString(); + }); + + // const existingAvailability = userSettings.availabilities.find( + // (availability) => availability.dateSet.toDateString() === updatedDesignReview.dateScheduled.toDateString() + // ); + + if (existingAvailability) { + // Remove meeting times from existing availability + const updatedAvailability = existingAvailability.availability.filter((time) => !meetingTimes.includes(time)); + + await prisma.availability.update({ + where: { availabilityId: existingAvailability.availabilityId }, + data: { + availability: updatedAvailability + } + }); + + await prisma.schedule_Settings.update({ + where: { userId: member.userId }, + data: { + availabilities: { + update: { + where: { availabilityId: existingAvailability.availabilityId }, + data: { + availability: updatedAvailability + } + } + } + } + }); + } + } } return designReviewTransformer(updatedDesignReview); From d3d049acec41cf345626afc5c24317474210ed44 Mon Sep 17 00:00:00 2001 From: Griffin Cooper <72273901+gcooper407@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:49:21 -0400 Subject: [PATCH 2/3] #2743: hopefully resolving error thrown --- src/backend/src/services/design-reviews.services.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/src/services/design-reviews.services.ts b/src/backend/src/services/design-reviews.services.ts index 5bbad03d4e..75ff5340fa 100644 --- a/src/backend/src/services/design-reviews.services.ts +++ b/src/backend/src/services/design-reviews.services.ts @@ -427,6 +427,7 @@ export default class DesignReviewsService { // Check if user has availability already for the scheduled date // TODO: Due to the off-by-one date bug, need to adjust one day from the scheduled date + // might need to make another ticket for this const existingAvailability = userSettings.availabilities.find((availability) => { const availabilityDate = new Date(availability.dateSet); const scheduledDate = new Date(updatedDesignReview.dateScheduled); From d5994f8d5bbd4c88be59fc1cb19413d58ab6f4c3 Mon Sep 17 00:00:00 2001 From: Griffin Cooper <72273901+gcooper407@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:49:21 -0400 Subject: [PATCH 3/3] #2743: hopefully resolving error thrown --- src/backend/src/services/design-reviews.services.ts | 1 + src/backend/tests/test-utils.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/backend/src/services/design-reviews.services.ts b/src/backend/src/services/design-reviews.services.ts index 5bbad03d4e..75ff5340fa 100644 --- a/src/backend/src/services/design-reviews.services.ts +++ b/src/backend/src/services/design-reviews.services.ts @@ -427,6 +427,7 @@ export default class DesignReviewsService { // Check if user has availability already for the scheduled date // TODO: Due to the off-by-one date bug, need to adjust one day from the scheduled date + // might need to make another ticket for this const existingAvailability = userSettings.availabilities.find((availability) => { const availabilityDate = new Date(availability.dateSet); const scheduledDate = new Date(updatedDesignReview.dateScheduled); diff --git a/src/backend/tests/test-utils.ts b/src/backend/tests/test-utils.ts index 68e35ff3db..754b23d591 100644 --- a/src/backend/tests/test-utils.ts +++ b/src/backend/tests/test-utils.ts @@ -147,6 +147,7 @@ export const resetUsers = async () => { await prisma.user_Settings.deleteMany(); await prisma.session.deleteMany(); await prisma.user_Secure_Settings.deleteMany(); + await prisma.availability.deleteMany(); await prisma.schedule_Settings.deleteMany(); await prisma.role.deleteMany(); await prisma.design_Review.deleteMany();