/// <summary> /// Evaluates test completed by user. /// </summary> /// <param name="completedTest"> Test completed by user.</param> /// <returns> TestResult instance.</returns> /// <exception> System.ArgumentNullException if completedTest is null.</exception> public BllTestResult EvaluateTest(BllCompletedTest completedTest) { if (completedTest == null) { throw new ArgumentNullException(nameof(completedTest)); } int numberOfCorrectAnswers = 0; foreach (var question in completedTest.Test.Questions) { int count = 0; foreach (var answer in question.CorrectAnswers) { if (completedTest.ChoosenAnswers.Select(a => a.Id).Contains(answer.Id)) { count++; } } if (count == question.CorrectAnswers.Count()) { numberOfCorrectAnswers++; } } var testResult = new BllTestResult { DateTime = DateTime.Now, Grade = GradeTest(numberOfCorrectAnswers, completedTest.Test.Questions.Count), TimeSpent = completedTest.TimeSpent, UserId = completedTest.UserId, Test = completedTest.Test }; repository.Create(testResult.ToDalTestResult()); service.Save(); return(testResult); }
/// <summary> /// Creates a test result /// </summary> /// <param name="entity">Test result</param> public void Create(BllTestResult entity) { testResultRepository.Create(entity.ToDalTestResult()); unitOfWork.Commit(); }