From bf348c1977645d3dd4ae5d706c65c3dd27c4a0f9 Mon Sep 17 00:00:00 2001 From: Ryan Savara <32147285+ryansavara@users.noreply.github.com> Date: Tue, 17 Mar 2026 13:21:08 -0400 Subject: [PATCH 1/2] set homeFacility on visit status change --- src/controllers/controller/controller.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/controllers/controller/controller.ts b/src/controllers/controller/controller.ts index 01cc466..22a34a3 100644 --- a/src/controllers/controller/controller.ts +++ b/src/controllers/controller/controller.ts @@ -655,12 +655,16 @@ router.patch( user.certCodes = certDates.map((c) => c.code); user.certificationDate = certDates; + user.homeFacility = req.body.homeFacility; + const userOi = await checkOI(user); if (!userOi) { throwInternalServerErrorException('Unable to generate operating initials'); } user.oi = userOi; + } else { + delete user.homeFacility; } await user.save(); From bf700f2d6ca8ab526931cc01b3eb340c1f9abee3 Mon Sep 17 00:00:00 2001 From: Ryan Savara <32147285+ryansavara@users.noreply.github.com> Date: Thu, 19 Mar 2026 09:52:54 -0400 Subject: [PATCH 2/2] fix sendEvent N+1 --- src/controllers/event/event.ts | 57 ++++++++++++++-------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/controllers/event/event.ts b/src/controllers/event/event.ts index 4e98c8d..b370341 100644 --- a/src/controllers/event/event.ts +++ b/src/controllers/event/event.ts @@ -438,41 +438,30 @@ router.post( } const positions = eventData.positions; - const positionFields = await Promise.all( - positions.map(async (position: IEventPosition) => { - if (typeof position.takenBy === 'undefined' || position.takenBy === null) { - return { - name: position.pos, - value: 'Open', - inline: true, - }; - } else { - try { - const res1 = await UserModel.findOne({ cid: position.takenBy }) - .lean() - .cache('10 minutes', `user-${position.takenBy}`) - .exec(); - if (!res1) { - throwInternalServerErrorException('User not found'); - } - const name = res1.fname + ' ' + res1.lname; - return { - name: position.pos, - value: name, - inline: true, - }; - } catch (err) { - console.log(err); - return { - name: position.pos, - value: 'Unknown (Server Error)', - inline: true, - }; - } - } - }), - ); + const userCids = [...new Set(positions.map((p) => p.takenBy).filter((cid) => !!cid))]; + const users = await UserModel.find({ cid: { $in: userCids } }) + .lean() + .exec(); + const userMap = new Map(users.map((u) => [u.cid, u])); + + const positionFields = positions.map((position: IEventPosition) => { + if (!position.takenBy) { + return { + name: position.pos, + value: 'Open', + inline: true, + }; + } + + const user = userMap.get(position.takenBy); + + return { + name: position.pos, + value: user ? `${user.fname} ${user.lname}` : 'Unknown User', + inline: true, + }; + }); const fieldsChunked = chunkArray(positionFields, 25); // Chunk into arrays of 25 fields