Пример #1
0
        public double GetQuestionScore(QuestionScore question)
        {
            var variables  = this.GetQuestionVariables(question);
            var expression = new Expression(question.ScoreFormula, variables);

            return(expression.calculate());
        }
Пример #2
0
 public void AddQuestionPoints(QuestionScore questionScore)
 {
     questionScore.Question.Score    = questionScore.Points * questionScore.Question.Weight;
     questionScore.Question.MaxScore = questionScore.MaxPoints * questionScore.Question.Weight;
     AnsweredQuestions.Add(questionScore.Question);
     TotalScore    += questionScore.Question.Score;
     TotalMaxScore += questionScore.Question.MaxScore;
 }
Пример #3
0
        public static QuestionScore SetCorrectOptions(this QuestionScore question)
        {
            foreach (var option in question.OptionList)
            {
                if (option.Weight > 0)
                {
                    option.IsAnswer = true;
                }
            }

            return(question);
        }
Пример #4
0
 public static QuestionScore SetUserSelectedOptions(this QuestionScore question)
 {
     question.OptionList.Join(
         question.Answers,
         option => option.IdOption,
         userAnswer => userAnswer,
         (option, userAnswer) =>
     {
         option.UserSelected = true;
         return(true);
     }).ToArray();
     return(question);
 }
Пример #5
0
        private PrimitiveElement[] GetQuestionVariables(QuestionScore question)
        {
            var variables              = new List <PrimitiveElement>();
            var correctUserOptions     = this.GetCorrectUserOptions(question);
            var correctQuestionOptions = this.GetCorrectQuestionOptions(question);
            var answersIterator        = new OptionListIterator(correctUserOptions, VariableNames.CorrectAnswer);

            variables.Add(new Argument(VariableNames.CorrectOptions, correctQuestionOptions.Count));
            variables.Add(new Argument(VariableNames.CorrectAnswers, correctUserOptions.Count));
            variables.Add(new Argument(VariableNames.CorrectAnswersLength, correctUserOptions.Count - 1));
            variables.Add(new Argument(VariableNames.QuestionScore, question.Weight));
            variables.Add(new Argument(VariableNames.OptionsLength, question.OptionList.Count - 1));
            variables.Add(new Function(VariableNames.CorrectAnswer, answersIterator));
            return(variables.ToArray());
        }
Пример #6
0
        public List <OptionScore> GetCorrectUserOptions(QuestionScore question)
        {
            List <OptionScore> userSelectedOptions = question.OptionList.Join(
                question.Answers,
                option => option.IdOption,
                answer => answer,
                (option, answer) =>
            {
                return(option);
            })
                                                     .Where(option => option.Weight > 0)
                                                     .ToList();

            return(userSelectedOptions);
        }
 public void Init()
 {
     instance = new QuestionScore();
 }
Пример #8
0
 public List <OptionScore> GetCorrectQuestionOptions(QuestionScore question)
 {
     return(question.OptionList.Where(option => option.IsAnswer).ToList());
 }