public ActionResult Save(QuestionDetailViewModel viewModel) { var userId = User.Identity.GetUserId(); var existingAnswer = _unitOfWork.AnswerRepository.SingleOrDefault( a => a.QuestionId == viewModel.Question.Id && a.AppUserId == userId); var isNewAnswer = existingAnswer == null; var answerToSave = UpdateOrAddAnswer(viewModel, existingAnswer); try { _unitOfWork.Complete(); if (isNewAnswer) { _unitOfWork.ActivityRepository.Add( Activity.ActivityAnswerQuestion(userId, viewModel.Question.Id, answerToSave.Id)); _unitOfWork.Complete(); } } catch (DbEntityValidationException ex) { var error = ex.EntityValidationErrors?.FirstOrDefault()?.ValidationErrors?.FirstOrDefault(); ModelState.AddModelError("", error?.ErrorMessage); return(View("~/Views/Question/Detail.cshtml", viewModel)); } return(RedirectToAction("Detail", "Answer", new { id = answerToSave.Id })); }
public void ActivityAnswerQuestion_questionIdOrAnswerIdIsZeroOrNegativeOrUserIdIsNull_ShouldThrowArgumentException() { Assert.Throws <ArgumentException>(() => Activity.ActivityAnswerQuestion("1", 0, 1)); Assert.Throws <ArgumentException>(() => Activity.ActivityAnswerQuestion("1", -1, 1)); Assert.Throws <ArgumentException>(() => Activity.ActivityAnswerQuestion("1", 1, 0)); Assert.Throws <ArgumentException>(() => Activity.ActivityAnswerQuestion("1", 1, -1)); Assert.Throws <ArgumentNullException>(() => Activity.ActivityAnswerQuestion(null, 1, 1)); }
public static Activity AddTestActivityAnswerQuestionToDatabase(this iKnowContext context, int questionId, int answerId) { var activity = Activity.ActivityAnswerQuestion(context.Users.First().Id, questionId, answerId); return(AddActivity(context, activity)); }