コード例 #1
0
        /// <summary>
        /// Analyzes new information and adds data to an existing report
        /// </summary>
        /// <param name="report">An existing report</param>
        /// <param name="newData">Information about new test</param>
        public static void AddNewData(this DataAnalyserReport report, PersonTestResult newData)
        {
            if (!report.PersonStatistics.ContainsKey(newData.Person.Email))
            {
                report.PersonStatistics.Add(newData.Person.Email, new PersonStatistics());
            }
            report.PersonStatistics[newData.Person.Email].Results.Add(newData.Result);
            CalculateAdditionalInfo(report.PersonStatistics[newData.Person.Email]);

            if (!report.ResultDistribution.ContainsKey(newData.Result))
            {
                report.ResultDistribution.Add(newData.Result, 0U);
            }
            report.ResultDistribution[newData.Result]++;

            report.TotalAmountOfTests++;

            foreach (var answer in newData.Answers)
            {
                if (!report.QuestionStatistics.ContainsKey(answer.Question.QuestionText))
                {
                    report.QuestionStatistics.Add(answer.Question.QuestionText, new QuestionStatistics());
                }
                var el = report.QuestionStatistics[answer.Question.QuestionText];

                if (answer.AnswerIndex == answer.Question.CorrectAnswerIndex)
                {
                    el.RightAnswersAmount++;
                }
                else
                {
                    el.WrongAnswersAmount++;
                }

                el.RightAnswerIndex = answer.Question.CorrectAnswerIndex;

                el.AnswersDistribution[answer.AnswerIndex]++;
            }
        }
コード例 #2
0
 public PersonTestResult SavePersonTestResult(PersonTestResult testResult)
 {
     GetPersonTestResultCollection().InsertOne(testResult);
     return(testResult);
 }