diff --git a/backend/routes/friendRoutes.js b/backend/routes/friendRoutes.js index 0d591cd0..a1f727ad 100644 --- a/backend/routes/friendRoutes.js +++ b/backend/routes/friendRoutes.js @@ -198,7 +198,6 @@ router.get('/getFriends', verifyToken, async (req, res) => { ] }).populate('requester recipient', 'username'); - const friends = friendships.map(friendship => { return friendship.requester._id.toString() === userId.toString() ? friendship.recipient @@ -207,22 +206,43 @@ router.get('/getFriends', verifyToken, async (req, res) => { const friendIds = friends.map(friend => friend._id); - // fetch friends objects - const friendsObjects= await User.find({ - _id: { $in: friendIds } + const friendsObjects = await User.find({ + _id: { $in: friendIds.map(id => new mongoose.Types.ObjectId(id)) } }); - - console.log(`GET: /friends friends found`); + + const checkedInFriends = await Classroom.find( + { checked_in: { $in: friendIds.map(id => new mongoose.Types.ObjectId(id)) } }, + { checked_in: 1, _id: 1 } + ); + + const checkedInMap = new Map(); + checkedInFriends.forEach(classroom => { + classroom.checked_in.forEach(friendId => { + checkedInMap.set(friendId.toString(), classroom._id); + }); + }); + + const friendsWithCheckInData = friendsObjects.map(friend => { + const friendData = friend.toObject(); + const classroomId = checkedInMap.get(friend._id.toString()); + if (classroomId) { + friendData.checkedIn = classroomId.toString(); + } + return friendData; + }); + + console.log(`GET: /getFriends friends found`); res.json({ success: true, message: 'Friends found', - data: friendsObjects - }) + data: friendsWithCheckInData + }); } catch (error) { + console.log(`GET: /getFriends failed`); res.json({ success: false, message: error.message - }) + }); } });