Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        // 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));
        }
Esempio n. 7
0
        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));
        }