Example #1
0
        public async Task <long> AssessTextAnswerAsync(AssessTextAnswerModel assessModel)
        {
            var answersUnit = await AnswersUnits.Find(unit => unit.Id == assessModel.AnswerUnitId).FirstOrDefaultAsync();

            var newAssessment = answersUnit.TotalAssessment + assessModel.Assessment;

            answersUnit.Answers.Single(a => a.QuestionId == assessModel.QuestionId).IsChecked = true;
            var unitChecked = answersUnit.Answers.All(a => (bool)a.IsChecked);

            return((await AnswersUnits.UpdateOneAsync(unit => unit.Id == assessModel.AnswerUnitId && unit.Answers.Any(answer => answer.QuestionId == assessModel.QuestionId),
                                                      Builders <QuizAnswersUnit> .Update
                                                      .Set(quiz => quiz.Answers[-1].Assessment, assessModel.Assessment)
                                                      .Set(quiz => quiz.Answers[-1].IsChecked, true)
                                                      .Set(quiz => quiz.TotalAssessment, newAssessment)
                                                      .Set(quiz => quiz.IsChecked, unitChecked)
                                                      )).ModifiedCount);
        }
Example #2
0
        public async Task <ActionResult <long> > AssessTextAnswer(AssessTextAnswerModel assessModel)
        {
            var answersUnit = await _quizRepository.GetAnswersUnitByIdAsync(assessModel.AnswerUnitId);

            var quiz = await _quizRepository.GetByIdAsync(answersUnit.PollBaseId);

            if (!SenderPermissions.Contains("CanAssessAnyAnswer"))
            {
                if (quiz.CreatorUserId != SenderObjectId)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, "Only creator or admin can assess answers"));
                }
            }

            var result = new AssessTextAnswerModelValidatorFromData(answersUnit, quiz).Validate(assessModel);

            result.AddToModelState(ModelState, null);
            if (!result.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(Ok(await _quizRepository.AssessTextAnswerAsync(assessModel)));
        }