private List<QuestionDetails> GetQuestionDetailList(IList<TestHistory> historyList, TestResults testResult)
 {
     var questionsList= new List<QuestionDetails>();
     foreach (var testHistory in historyList)
     {
         var question = testResult.Test.Questions.FirstOrDefault(n => n.Number == testHistory.Number);
         if (question != null)
         {
             if (question.TestType == DataConst.CheckedType || question.TestType == DataConst.RadioType)
             {
                 var questionDetails = new CheckedQuestion
                 {
                     Type = question.TestType,
                     QuestionText = question.Text,
                     UserNumber = DataConst.UserCheckNumber + historyList.IndexOf(testHistory),
                     RealNumber = DataConst.RealCheckNumber + historyList.IndexOf(testHistory),
                     VariantsList = new List<CheckedVariant>()
                 };
                 var listVariant = ((QuestionWithVariants)question).VariantAnswers.ToList();
                 foreach (var variantAnswer in listVariant)
                 {
                     var variant = new CheckedVariant { Text = variantAnswer.Text };
                     var index = listVariant.IndexOf(variantAnswer);
                     variant.RealAnswer = question.Answer[index] == '1';
                     variant.UserAnswer = false;
                     if (testHistory.UserAnswer != null)
                     {
                         if (testHistory.UserAnswer.Count() >= index)
                         {
                             variant.UserAnswer = testHistory.UserAnswer[index] == '1';
                         }
                     }
                     questionDetails.VariantsList.Add(variant);
                 }
                 questionsList.Add(questionDetails);
             }
         }
     }
     return questionsList;
 }
 private void CalculateResult(int userId, Action action, UsersContext db)
 {
     var testResult = new TestResults
     {
         User = db.UserProfiles.FirstOrDefault(u => u.UserId == userId),
         Action = action,
         Test = action.Test,
         DatePassing = action.DatePassing
     };
     double pointSum = 0;
     foreach (var test in action.TestsInProgres)
     {
         if (test.UserAnswer != null)
         {
             switch (test.Question.TestType)
             {
                 case DataConst.CheckedType:
                 {
                     pointSum += (CalculateChecked(test));
                     break;
                 }
                 case DataConst.RadioType:
                 {
                     pointSum += (CalculateRadio(test));
                     break;
                 }
             }
         }
     }
     testResult.PercentTaken = Convert.ToInt32((pointSum/action.TestsInProgres.Count)*100);
     testResult.Passed = testResult.PercentTaken >= DataConst.PercentLimit;
     db.TestsResults.Add(testResult);
     db.SaveChanges();
 }