public void SaveQuestionEditModelIntoDbTest() { var questionsRepositoryMock = new QuestionsRepositoryMock(); var answersRepositoryMock = new AnswersRepositoryMock(); var correctAnswerRepositoryMock = new CorrectAnswerRepositoryMock(); var managerMock = new DataManagerMock(answersRepositoryMock, new TestsRepositoryMock(), questionsRepositoryMock, new UsersRepositoryMock(), correctAnswerRepositoryMock, new UserTestAccessRepositoryMock(), new StatisticsRepositoryMock()); var questionService = new QuestionService(managerMock); var questionEditModel = new QuestionEditModel() { AnswerEditModels = new List <AnswerEditModel>() { new AnswerEditModel() { Correct = true, Name = "AnsText" }, new AnswerEditModel() { Correct = true, Name = "AnsText2" } }, Id = 1, Name = "QuestText" }; questionService.SaveQuestionEditModelIntoDb(questionEditModel); Assert.True(questionsRepositoryMock.IsSetQuestionIntoDb); Assert.True(answersRepositoryMock.IsSaveAnswer); Assert.True(correctAnswerRepositoryMock.IsSetCorrectAnswerIntoDb); }
public IActionResult StartCreateQuestion(int testId) { //ViewBag.testId = testId; var _Model = new QuestionEditModel(); _Model.Id = testId; return(View(_Model)); }
// GET: Question/Create public ActionResult Create() { var questionEditModel = new QuestionEditModel() { Topics = topicFacade.GetAllTopics() }; return(View(questionEditModel)); }
public async Task EditQuestionAsync(QuestionEditModel questionModel) { var question = (await _questionRepository .GetQuestionWithTagsAsync(questionModel.QuestionId)) ?? throw new EntityNotFoundException(nameof(Question), questionModel.QuestionId); var tags = await _tagService.GetTagsAsync(questionModel.TagIds); var user = await _userRepository.GetUser <User>(questionModel.QuestionUserId); question.Edit(user, questionModel.Title, questionModel.Body, tags, _limits); await _uow.SaveAsync(); }
public async Task <ActionResult> Edit(QuestionEditModel model) { if (ModelState.IsValid) { var secretModel = await _db.Questions .Where(x => x.Id == model.Id) .ProjectTo <QuestionNotMappedEditModel>() .FirstOrDefaultAsync(); if (!User.IsUserOrRole(secretModel.CreateUserId, SystemRoles.QuestionAdmin)) { return(RedirectToAction("Details").WithWarning("仅题目创建者才能编辑题目。")); } await _manager.Update(secretModel, model); return(RedirectToAction("Details", new { id = model.Id })); } return(View(model)); }
// GET: Questions/Edit/5 public IActionResult Edit(Guid?id) { if (id == null) { return(NotFound()); } var question = _service.GetQuestionById(id.Value); if (question == null) { return(NotFound()); } var questionEditModel = new QuestionEditModel( question.UserId, question.Topic, question.Text ); return(View(questionEditModel)); }
public IActionResult StartCreateQuestion(QuestionEditModel _model, Actions actionType, int removingAnswerId) { int truthCheckCounter = 0; foreach (var prop in _model.AnswerEditModels) { if (prop.Correct) { truthCheckCounter++; } if (truthCheckCounter > 1) { ModelState.AddModelError("Truth answers greater then 1", "There can be only one correct answer"); return(View(_model)); } } //this.ViewBag.testId = testId; //_model.Id = testId; switch (actionType) { case Actions.MoreQuestion: if (truthCheckCounter == 0) { ModelState.AddModelError("Correct not selected", "The correct answer is not selected"); return(View(_model)); } _serviceManager.Questions.SaveQuestionEditModelIntoDb(_model); _model = new QuestionEditModel() { Id = _model.Id }; ModelState.Clear(); break; case Actions.MoreAnswer: _model.AnswerEditModels.Add(new AnswerEditModel()); break; case Actions.RemoveAnswer: AnswerEditModel _answerToDelete = _model.AnswerEditModels[removingAnswerId]; if (_model.AnswerEditModels.Count > 1) { _model.AnswerEditModels.Remove(_answerToDelete); ModelState.Clear(); } break; case Actions.End: if (truthCheckCounter == 0) { ModelState.AddModelError("Correct not selected", "The correct answer is not selected"); return(View(_model)); } _serviceManager.Questions.SaveQuestionEditModelIntoDb(_model); //return RedirectToAction("EndCreating", new { testId=_model.Id }); return(RedirectToAction("MyTests")); break; default: break; } return(View(_model)); }