public TestHistoryDTO Insert(TestHistoryDTO testHistory) { testHistory = RestoreMappings(testHistory); /*Console.WriteLine("TestHistory: (TestId - " + testHistory.TestId + ", UserId - " + testHistory.UserId + ", TimeSpent - " + testHistory.TimeSpent + ", IsDone - " + testHistory.IsDone + ", CompletionDate - " + testHistory.CompletionDate + ")"); + + if (testHistory.Answers != null) + { + foreach (var answer in testHistory.Answers) + { + Console.WriteLine(" AnswerHistory: (TestHistoryId - " + answer.TestHistoryId + ", Text - " + answer.Text + ", AnswerId - " + answer.AnswerId + ", IsCorrect - " + answer.IsCorrect + ")"); + } + }*/ TestHistory testHistoryEntity = _database.TestHistories.Insert(Mapper.Map <TestHistoryDTO, TestHistory>(testHistory)); _database.Save(); return(Mapper.Map <TestHistory, TestHistoryDTO>(testHistoryEntity)); }
private double GetScore(TestHistoryDTO testHistory) { int maxScore = testHistory.Test.Questions.Count; int score = 0; foreach (var answer in testHistory.Answers) { // TODO Make more precise if (answer.Answer != null) { if (answer.Answer.IsCorrect) { score++; } } else { AnswerDTO searchedAnswer = answer.Question.Answers.Find((currAnswer) => currAnswer.Text.Trim().ToLower().Equals(answer.Text.Trim().ToLower())); if (searchedAnswer != null) { score++; } } } if (score > maxScore) { return(100); } return((score / maxScore) * 100); }
public TestHistoryDTO Delete(TestHistoryDTO testHistory) { TestHistory testHistoryEntity = _database.TestHistories.Delete(Mapper.Map <TestHistoryDTO, TestHistory>(testHistory)); _database.Save(); return(Mapper.Map <TestHistory, TestHistoryDTO>(testHistoryEntity)); }
private TestHistoryDTO RestoreMappings(TestHistoryDTO testHistory) { foreach (var answer in testHistory.Answers) { answer.TestHistory = testHistory; } return(testHistory); }
public bool Update(TestHistoryDTO testHistory) { bool isUpdated = _database.TestHistories.Update(testHistory.Id, Mapper.Map <TestHistoryDTO, TestHistory>(testHistory)); if (isUpdated) { _database.Save(); return(true); } return(false); }