/// <summary> /// Adds a question submission to the database. /// </summary> public TestDatabaseBuilder AddQuestionSubmission( string classroomName, string questionCategoryName, string questionName, string userName, string submissionContents, double score = 0.0, DateTime? dateSubmitted = null, int? seed = null, string cachedQuestionData = null) { var question = _buildContext.Questions .Where(q => q.QuestionCategory.Classroom.Name == classroomName) .Where(q => q.QuestionCategory.Name == questionCategoryName) .Single(q => q.Name == questionName); var user = _buildContext.Users .Single(u => u.UserName == userName); var userQuestionData = _buildContext.UserQuestionData .Where(uqd => uqd.User == user) .SingleOrDefault(uqd => uqd.Question == question); if (userQuestionData == null) { userQuestionData = new UserQuestionData() { UserId = user.Id, QuestionId = question.Id, LastQuestionSubmission = submissionContents, CachedQuestionData = cachedQuestionData, CachedQuestionDataTime = dateSubmitted, Seed = seed }; _buildContext.UserQuestionData.Add(userQuestionData); } else { userQuestionData.LastQuestionSubmission = submissionContents; userQuestionData.CachedQuestionData = cachedQuestionData; userQuestionData.CachedQuestionDataTime = dateSubmitted; userQuestionData.Seed = seed; _buildContext.UserQuestionData.Update(userQuestionData); } var userQuestionSubmission = new UserQuestionSubmission() { DateSubmitted = dateSubmitted ?? DateTime.MinValue, UserQuestionData = userQuestionData, Score = score }; _buildContext.UserQuestionSubmissions.Add(userQuestionSubmission); _buildContext.SaveChanges(); return this; }
/// <summary> /// Validates that a complete submission was retrieved from the database. /// </summary> private bool ValidateSubmission( UserQuestionSubmission submission, string questionName, string userName, double score, DateTime dateSubmitted) { return submission.UserQuestionData != null && submission.UserQuestionData.Question != null && submission.UserQuestionData.User != null && submission.UserQuestionData.Question.Name == questionName && submission.UserQuestionData.User.UserName == userName && submission.Score == score && submission.DateSubmitted == dateSubmitted; }