Fixed accepted answer not registering

This commit is contained in:
Ceferino Patino 2022-08-02 21:31:29 -05:00
commit 405bbfecf4
2 changed files with 12 additions and 7 deletions

View file

@ -8,7 +8,7 @@ const Question = mongoose.Schema(
createdAt: { type: Date, required: true, default: Date.now },
creator: { type: String, required: true },
downvotes: { type: Number, required: true, default: 0 },
hasAccepted: { type: Boolean, required: true, default: false },
hasAcceptedAnswer: { type: Boolean, required: true, default: false },
lastAnswerFetch: { type: Date, default: new Date(0) },
lastCommentFetch: { type: Date, default: new Date(0) },
protect: [String],

View file

@ -1,5 +1,7 @@
const config = require('server/config.json');
const Answer = require('server/db/models/Answer');
const Question = require('server/db/models/Question');
const User = require('server/db/models/User');
const { getQuestion, refreshQuestion } = require('server/utils/question');
const createRequest = require('server/utils/api');
@ -12,10 +14,7 @@ async function EditAnswerAccepted(req, res) {
if (!question) return res.status(404).send(config.errorNotFound);
// Verify user owns question and question does not already have an accepted answer
if (
question.creator !== user.username ||
question.hasAccepted
)
if (question.creator !== user.username || question.hasAccepted)
return res.status(403).send(config.errorForbidden);
// Patch question with BDPA server
@ -30,16 +29,22 @@ async function EditAnswerAccepted(req, res) {
}
const cachedAnswer = await Answer.findByIdAndDelete(answer_id);
//update hasAcceptedAnswer
// Update hasAcceptedAnswer
await createRequest('patch', `/questions/${question_id}`, {
hasAcceptedAnswer: true
hasAcceptedAnswer: true,
});
await Question.findByIdAndUpdate(question_id, { hasAcceptedAnswer: true });
// Increment points of answer creator
await createRequest('patch', `/users/${cachedAnswer.creator}/points`, {
operation: 'increment',
amount: 15,
});
await User.findByOneAndUpdate(
{ username: cachedAnswer.creator },
{ $inc: { points: 15 } }
);
return res.sendStatus(200);
}