/// <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]++; } }
public PersonTestResult SavePersonTestResult(PersonTestResult testResult) { GetPersonTestResultCollection().InsertOne(testResult); return(testResult); }