public double GetQuestionScore(QuestionScore question) { var variables = this.GetQuestionVariables(question); var expression = new Expression(question.ScoreFormula, variables); return(expression.calculate()); }
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; }
public static QuestionScore SetCorrectOptions(this QuestionScore question) { foreach (var option in question.OptionList) { if (option.Weight > 0) { option.IsAnswer = true; } } return(question); }
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); }
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()); }
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(); }
public List <OptionScore> GetCorrectQuestionOptions(QuestionScore question) { return(question.OptionList.Where(option => option.IsAnswer).ToList()); }