From 6113c0f1a429c7dd504cd3a3e3ee38187f276c73 Mon Sep 17 00:00:00 2001 From: peHaick Date: Mon, 16 Nov 2020 16:51:39 -0300 Subject: [PATCH 1/6] =?UTF-8?q?User:=20Adicionando=20blacklist=20=C3=A0=20?= =?UTF-8?q?model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/models/User.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/models/User.js b/server/models/User.js index acd3ab3..f596657 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -79,6 +79,10 @@ const UserSchema = new Schema( registerLink: { type: String, }, + blacklist: [{ + type: mongoose.Schema.Types.ObjectId, + ref: 'blacklistedUser', + }], }, { timestamps: true, discriminatorKey: 'userType' } // eslint-disable-line comma-dangle From c23148779a7df7eae043c6583cbee4abd1938c83 Mon Sep 17 00:00:00 2001 From: peHaick Date: Mon, 16 Nov 2020 17:30:08 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Aprendiz=20e=20Mentor=20s=C3=A3o=20adiciona?= =?UTF-8?q?dos=20=C3=A0=20blacklist=20ap=C3=B3s=20desvincular?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/LearnerController.js | 2 ++ server/controllers/MentorController.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/server/controllers/LearnerController.js b/server/controllers/LearnerController.js index 3a7e960..f00c34a 100644 --- a/server/controllers/LearnerController.js +++ b/server/controllers/LearnerController.js @@ -77,10 +77,12 @@ module.exports = { if (!learner.mentor) throw new Error('Learner does not have a mentor'); await Mentor.findByIdAndUpdate(learner.mentor, { $pull: { learners: learner._id }, + $push: { blacklist: learner._id}, isAvailable: false, }); const oldMentor = learner.mentor; const mentorMail = await Mentor.findById(learner.mentor); + learner.blacklist.push(learner.mentor); learner.mentor = null; await learner.save(); const data = mail.unassignMentor(req.user.email, req.user.name, mentorMail.name, mentorMail.gender); // eslint-disable-line max-len diff --git a/server/controllers/MentorController.js b/server/controllers/MentorController.js index f9ceb2e..56280dc 100644 --- a/server/controllers/MentorController.js +++ b/server/controllers/MentorController.js @@ -66,8 +66,10 @@ module.exports = { const learner = await Learner.findByIdAndUpdate(learnerID, { mentor: null, mentor_request: false, + $push: { blacklist: user._id}, }, { new: true }); + user.blacklist.push(learnerID); await user.save(); await user.execPopulate('learners'); const data = mail.unassignMentor(learner.email, learner.name, user.name, user.gender); From 237c6a4d796924e41cfba315a41fdfd9230b9c29 Mon Sep 17 00:00:00 2001 From: peHaick Date: Mon, 16 Nov 2020 17:53:58 -0300 Subject: [PATCH 3/6] =?UTF-8?q?Busca=20por=20mentor=20e=20aprendiz=20ignor?= =?UTF-8?q?a=20usu=C3=A1rios=20na=20blacklist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/LearnerController.js | 2 +- server/controllers/MentorController.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/controllers/LearnerController.js b/server/controllers/LearnerController.js index f00c34a..6092b01 100644 --- a/server/controllers/LearnerController.js +++ b/server/controllers/LearnerController.js @@ -24,7 +24,7 @@ module.exports = { await learner.save(); if (learner.mentor) throw new Error('Learner already has a mentor'); let mentor = (await Mentor.aggregate() - .match({ isAvailable: true, isValidated: true }) + .match({ isAvailable: true, isValidated: true, _id: { $nin: learner.blacklist } }) .group({ _id: '$_id', size: { $max: '$learners' }, diff --git a/server/controllers/MentorController.js b/server/controllers/MentorController.js index 56280dc..c8b2c4f 100644 --- a/server/controllers/MentorController.js +++ b/server/controllers/MentorController.js @@ -21,11 +21,12 @@ module.exports = { async assignLearner(req, res) { const { user } = req; + if (!user.isValidated) throw new Error('Mentor not validated'); user.isAvailable = true; try { await user.save(); const learner = ( - await Learner.find({ mentor_request: true, mentor: null }).sort({ + await Learner.find({ mentor_request: true, mentor: null, _id: { $nin: user.blacklist } }).sort({ createdAt: 'asc', }) )[0]; From 853ca2b2675dd188aa5a461d1acf8ce4a9da7bf9 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 17 Nov 2020 17:00:10 -0300 Subject: [PATCH 4/6] =?UTF-8?q?Mudando=20para=20a=20variav=C3=A9l=20j?= =?UTF-8?q?=C3=A1=20criada=20para=20este=20intuito?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/LearnerController.js | 6 +++--- server/controllers/MentorController.js | 6 +++--- server/models/User.js | 11 ++++------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/server/controllers/LearnerController.js b/server/controllers/LearnerController.js index 6092b01..ff9830c 100644 --- a/server/controllers/LearnerController.js +++ b/server/controllers/LearnerController.js @@ -24,7 +24,7 @@ module.exports = { await learner.save(); if (learner.mentor) throw new Error('Learner already has a mentor'); let mentor = (await Mentor.aggregate() - .match({ isAvailable: true, isValidated: true, _id: { $nin: learner.blacklist } }) + .match({ isAvailable: true, isValidated: true, _id: { $nin: learner.noAssociations } }) .group({ _id: '$_id', size: { $max: '$learners' }, @@ -77,12 +77,12 @@ module.exports = { if (!learner.mentor) throw new Error('Learner does not have a mentor'); await Mentor.findByIdAndUpdate(learner.mentor, { $pull: { learners: learner._id }, - $push: { blacklist: learner._id}, + $push: { noAssociations: learner._id}, isAvailable: false, }); const oldMentor = learner.mentor; const mentorMail = await Mentor.findById(learner.mentor); - learner.blacklist.push(learner.mentor); + learner.noAssociations.push(learner.mentor); learner.mentor = null; await learner.save(); const data = mail.unassignMentor(req.user.email, req.user.name, mentorMail.name, mentorMail.gender); // eslint-disable-line max-len diff --git a/server/controllers/MentorController.js b/server/controllers/MentorController.js index c8b2c4f..30f7332 100644 --- a/server/controllers/MentorController.js +++ b/server/controllers/MentorController.js @@ -26,7 +26,7 @@ module.exports = { try { await user.save(); const learner = ( - await Learner.find({ mentor_request: true, mentor: null, _id: { $nin: user.blacklist } }).sort({ + await Learner.find({ mentor_request: true, mentor: null, _id: { $nin: user.noAssociations } }).sort({ createdAt: 'asc', }) )[0]; @@ -67,10 +67,10 @@ module.exports = { const learner = await Learner.findByIdAndUpdate(learnerID, { mentor: null, mentor_request: false, - $push: { blacklist: user._id}, + $push: { noAssociations: user._id}, }, { new: true }); - user.blacklist.push(learnerID); + user.noAssociations.push(learnerID); await user.save(); await user.execPopulate('learners'); const data = mail.unassignMentor(learner.email, learner.name, user.name, user.gender); diff --git a/server/models/User.js b/server/models/User.js index f596657..43b9a1a 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -45,10 +45,11 @@ const UserSchema = new Schema( type: Boolean, select: false, }, - noAssociations: { - type: [String], + noAssociations: [{ + type: mongoose.Schema.Types.ObjectId, + ref: 'blacklistedUser', select: false, - }, + }], courseCertificates: [{ type: mongoose.Schema.Types.ObjectId, ref: 'courseCertificate', @@ -79,10 +80,6 @@ const UserSchema = new Schema( registerLink: { type: String, }, - blacklist: [{ - type: mongoose.Schema.Types.ObjectId, - ref: 'blacklistedUser', - }], }, { timestamps: true, discriminatorKey: 'userType' } // eslint-disable-line comma-dangle From aa23f29b351abc24de94598d134a2bf428572e04 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 17 Nov 2020 18:40:10 -0300 Subject: [PATCH 5/6] Lint --- server/controllers/MentorController.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/controllers/MentorController.js b/server/controllers/MentorController.js index 30f7332..12e1c4c 100644 --- a/server/controllers/MentorController.js +++ b/server/controllers/MentorController.js @@ -26,9 +26,16 @@ module.exports = { try { await user.save(); const learner = ( - await Learner.find({ mentor_request: true, mentor: null, _id: { $nin: user.noAssociations } }).sort({ - createdAt: 'asc', + await Learner.find({ + mentor_request: true, + mentor: null, + _id: { + $nin: user.noAssociations, + }, }) + .sort({ + createdAt: 'asc', + }) )[0]; if (!learner) throw new Error("There's no available learners"); learner.mentor = user._id; @@ -67,7 +74,7 @@ module.exports = { const learner = await Learner.findByIdAndUpdate(learnerID, { mentor: null, mentor_request: false, - $push: { noAssociations: user._id}, + $push: { noAssociations: user._id }, }, { new: true }); user.noAssociations.push(learnerID); From 7bb4e0746632c2be8ecd609713661c0254a2defa Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 17 Nov 2020 18:40:58 -0300 Subject: [PATCH 6/6] =?UTF-8?q?Implementado=20remo=C3=A7=C3=A3o=20de=20men?= =?UTF-8?q?tor,=20ap=C3=B3s=20promo=C3=A7=C3=A3o=20Feito=20Lint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/controllers/LearnerController.js | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/server/controllers/LearnerController.js b/server/controllers/LearnerController.js index ff9830c..c3ed4c2 100644 --- a/server/controllers/LearnerController.js +++ b/server/controllers/LearnerController.js @@ -77,7 +77,7 @@ module.exports = { if (!learner.mentor) throw new Error('Learner does not have a mentor'); await Mentor.findByIdAndUpdate(learner.mentor, { $pull: { learners: learner._id }, - $push: { noAssociations: learner._id}, + $push: { noAssociations: learner._id }, isAvailable: false, }); const oldMentor = learner.mentor; @@ -103,13 +103,24 @@ module.exports = { const hasLearnerCertificate = reqUser.courseCertificates.length > 0; if (!hasLearnerCertificate) throw new Error('User did not conclude Tutorial'); - - const user = await User.findOneAndUpdate( - { _id }, - { $set: { userType: 'Mentor' } }, { new: true }, + if (reqUser.mentor) { + await User.findOneAndUpdate({ _id }, { + $pull: { learners: reqUser._id }, + $push: { noAssociations: reqUser._id }, + isAvailable: false, + }); + reqUser.noAssociations.push(reqUser.mentor); + reqUser.mentor = null; + reqUser.save(); + } + const user = await User.findByIdAndUpdate( + _id, + { + $set: { userType: 'Mentor' }, + mentor_request: false, + }, { new: true }, ); user.isValidated = true; - user.mentor_request = false; user.save(); const data = mail.learnerPromotion(user.email, user.name); await transport.sendMail(data);