public ReportViewModel(int questionID, IDictionary<String, int> demoResponses, IDictionary<String, int> compareResponses) { this.questionID = questionID; this.demoResponses = demoResponses; this.compareResponses = compareResponses; var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); Question question = questionRepository.GetQuestionByID<Question>(questionID); this.text = question.question; QuestionChart chart = question.comparisonChart; this.chartType = chart.GetQuestionChartType(); this.valueType = chart.valueType; String[] coloursArray = chart.colours.Split(new char[] { ',', ' ' }); String chartColours = ""; int i = 0; foreach (String colour in coloursArray) { if (colour != "") { chartColours += "'" + colour + "'"; if (i < coloursArray.Length - 1) { chartColours += ", "; } i++; } } this.chartColours = chartColours; }
public ReportViewModel(int questionID, IDictionary<String, int> responses, IList<String> correct) { this.questionID = questionID; this.responses = responses; var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); Question question = questionRepository.GetQuestionByID<Question>(questionID); if (question.correctAnswerIndicator.active) { this.correct = correct; } else { this.correct = null; } this.text = question.question; QuestionChart chart = question.resultsChart; this.chartType = chart.GetQuestionChartType(); this.valueType = chart.valueType; String[] coloursArray = chart.colours.Split(new char[] {',', ' '}); String chartColours = ""; int i = 0; foreach (String colour in coloursArray) { if (colour != "") { chartColours += "'" + colour + "'"; if (i < coloursArray.Length - 1) { chartColours += ", "; } i++; } } this.chartColours = chartColours; }
// Only call this on MCQ questions public virtual IList<String> getCorrect() { var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); MultipleChoiceQuestion multipleQuestion = questionRepository.GetQuestionByID<MultipleChoiceQuestion>(this.questionID); IList<String> correctOptions = new List<String>(); if (multipleQuestion != null) { foreach (var option in multipleQuestion.options) { // If the answer is correct, store it if (option.correctCurrent) { correctOptions.Add(option.answer); } } } return correctOptions; }
public int[] GetQuestionResults(int questionID) { var pollRepository = new PollRepository(session); var questionRepository = new QuestionRepository(session); var question = questionRepository.GetQuestionByID<Question>(questionID); IDictionary<String, int> responses = new Dictionary<String, int>(); IList<String> correctOptions = new List<String>(); int[] responseStatistics = new int[2]; var poll = pollRepository.GetPollContainingQuestion(question); if (question.type == QuestionType.Numeric) { // If the question is numeric var numericQuestion = questionRepository.GetQuestionByID<NumericQuestion>(questionID); int numCorrect = 0; int numIncorrect = 0; foreach (var response in numericQuestion.responses) { // Check if the answer is correct if ((Convert.ToInt32(response.response) < numericQuestion.lessThan) && (Convert.ToInt32(response.response) > numericQuestion.greaterThan)) { numCorrect++; } else { numIncorrect++; } } responses.Add("Correct [" + numericQuestion.greaterThan.ToString() + " - " + numericQuestion.lessThan.ToString() + "]", numCorrect); responses.Add("Incorrect", numIncorrect); responseStatistics[0] = numCorrect + numIncorrect; responseStatistics[1] = numCorrect; } else if (question.type == QuestionType.Alphanumeric) { // If the question is alphanumeric var alphaQuestion = questionRepository.GetQuestionByID<AlphanumericQuestion>(questionID); // Get correct responses int numCorrect = 0; int numIncorrect = 0; int total = 0; foreach (var response in alphaQuestion.responses) { foreach (var answer in alphaQuestion.answers) { if (response.response.Equals(answer.answer)) { numCorrect++; } } total++; } // Build a string of correct answers String correctAnswers = ""; foreach (var answer in alphaQuestion.answers) { if (correctAnswers != "") { correctAnswers += ", "; } correctAnswers += answer.answer; } responses.Add("Correct [" + correctAnswers + "]", numCorrect); numIncorrect = total - numCorrect; responses.Add("Incorrect", numIncorrect); responseStatistics[0] = total; responseStatistics[1] = numCorrect; } else { var multipleQuestion = questionRepository.GetQuestionByID<MultipleChoiceQuestion>(questionID); int numCorrect = 0; int total = 0; foreach (var option in multipleQuestion.options) { total += option.responses.Count; if (option.correctCurrent) { numCorrect += option.responses.Count; } } total = total / multipleQuestion.allowedAnswers; numCorrect = numCorrect / multipleQuestion.allowedAnswers; responseStatistics[0] = total; responseStatistics[1] = numCorrect; } return responseStatistics; }
public String points(Participant participant) { var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); double points=0; double total = 0; IList<Question> multip = poll.questions.Where(m => m.type != QuestionType.Alphanumeric && m.type != QuestionType.Numeric).ToList(); IList<MultipleChoiceQuestion> multi = new List<MultipleChoiceQuestion>(); foreach (Question multipl in multip) multi.Add(questionRepository.GetQuestionByID<MultipleChoiceQuestion>(multipl.questionID)); foreach (MultipleChoiceQuestion ques in multi) { foreach (QuestionOption option in ques.options) { total += option.pointsCurrent; foreach (OptionResponse res in option.responses) if (res.participant == participant) points += option.pointsCurrent; } } return points + "/" + total; }
public int participating(Participant participant) { var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); IList<Question> shortre = poll.questions.Where(m => m.type == QuestionType.Alphanumeric || m.type == QuestionType.Numeric).ToList(); IList<Question> multip = poll.questions.Where(m => m.type != QuestionType.Alphanumeric && m.type != QuestionType.Numeric).ToList(); IList<ShortResponseQuestion> shortr = new List<ShortResponseQuestion>(); IList<MultipleChoiceQuestion> multi = new List<MultipleChoiceQuestion>(); foreach (Question shorty in shortre) shortr.Add(questionRepository.GetQuestionByID<ShortResponseQuestion>(shorty.questionID)); foreach (Question multipl in multip) multi.Add(questionRepository.GetQuestionByID<MultipleChoiceQuestion>(multipl.questionID)); int total = shortr.Count() + multi.Count(); int answered = 0; foreach (ShortResponseQuestion ques in shortr) foreach (ShortResponse res in ques.responses) if (res.participant == participant) answered++; foreach (MultipleChoiceQuestion ques in multi) { bool breaking = false; foreach (QuestionOption option in ques.options) { foreach (OptionResponse res in option.responses) if (res.participant == participant) { answered++; breaking = true; break; } if (breaking) break; } } return answered; }
public double onlytotal() { var questionRepository = new QuestionRepository(NHibernateHelper.GetCurrentSession()); double total = 0; IList<Question> multip = poll.questions.Where(m => m.type != QuestionType.Alphanumeric && m.type != QuestionType.Numeric).ToList(); IList<MultipleChoiceQuestion> multi = new List<MultipleChoiceQuestion>(); foreach (Question multipl in multip) multi.Add(questionRepository.GetQuestionByID<MultipleChoiceQuestion>(multipl.questionID)); foreach (MultipleChoiceQuestion ques in multi) { foreach (QuestionOption option in ques.options) { total += option.pointsCurrent; } } return total; }
public QuestionOption GetOptionByResponse(int responseID, int questionID) { var questionRepository = new QuestionRepository(session); IList<QuestionOption> options = questionRepository.GetQuestionByID<MultipleChoiceQuestion>(questionID).options; return (from item in options where item.responses.Any(r => r.responseID == responseID) select item).FirstOrDefault(); }