public PartialViewResult Edit([Bind(Include = "Id,Description,Options,ExamId")] SingleSelectionQuestionWithOptionsViewModel model)
        {
            if (ModelState.IsValid)
            {
                SingleSelectionQuestion question = new SingleSelectionQuestion
                {
                    Id          = model.Id,
                    ExamId      = model.ExamId,
                    Description = model.Description,
                    Options     = model.Options
                };

                _db.Entry(question).State = EntityState.Modified;
                foreach (var option in question.Options)
                {
                    _db.Entry(option).State = EntityState.Modified;
                }

                _db.SaveChanges();

                question = _db.SingleSelectionQuestions.Include(q => q.Variables).Single(q => q.Id == question.Id);
                var evaluator = new NotationlessEvaluator();
                question = evaluator.Evaluate(question) as SingleSelectionQuestion;
                return(PartialView("_Details", question));
            }

            return(PartialView("_Edit", model));
        }
        public PartialViewResult Create(int examId)
        {
            var question = new SingleSelectionQuestion {
                Description = "Pregunta nueva", ExamId = examId
            };

            var list = new List <QuestionOption>
            {
                new QuestionOption {
                    Description = "Opción 1", Feedback = "Feedback de opción 1", IsCorrect = true
                },
                new QuestionOption {
                    Description = "Opción 2", Feedback = "Feedback de opción 2", IsCorrect = false
                },
                new QuestionOption {
                    Description = "Opción 3", Feedback = "Feedback de opción 3", IsCorrect = false
                },
                new QuestionOption {
                    Description = "Opción 4", Feedback = "Feedback de opción 4", IsCorrect = false
                }
            };


            question.Options = list;

            _db.SingleSelectionQuestions.Add(question);
            _db.SaveChanges();

            var evaluator = new NotationlessEvaluator();

            question = evaluator.Evaluate(question) as SingleSelectionQuestion;
            return(PartialView("_Details", question));
        }
Example #3
0
        public void GetRightAnswer_GetsZeroOptions_ReturnsNull()
        {
            //Arrange
            var singleSelectionQuestion = new SingleSelectionQuestion("Question text");
            //Act
            var answer = singleSelectionQuestion.GetRightAnswer();

            //Assert
            Assert.Null(answer);
        }
Example #4
0
        public void DeleteQuestionOptionsInDB(SingleSelectionQuestion question)
        {
            var options = question.Options
                          .ToList();

            foreach (var o in options)
            {
                _dbContext.Entry(o).State = EntityState.Deleted;
            }
            _dbContext.SaveChanges();
        }
        public IActionResult Create(SingleSelectionQuestionModel modelForView, IList <string> textOfAnswers, string radioButtonValue)
        {
            if (modelForView == null)
            {
                return(BadRequest("Model for view is empty."));
            }

            var question = new SingleSelectionQuestion(modelForView.Question, textOfAnswers, radioButtonValue);

            _singleRepository.AddQuestion(question);
            return(RedirectToAction("Index", "Home"));
        }
Example #6
0
        public void InitializeOptions_GetsNoTrue_ArgumentException()
        {
            //Arrange
            var options = new List <SingleSelectionQuestionOption>()
            {
                new SingleSelectionQuestionOption("1st option (false)", false),
                new SingleSelectionQuestionOption("2nd option (false)", false)
            };
            var singleSelectionQuestion = new SingleSelectionQuestion("Question text");

            //Act
            //Assert
            Assert.Throws <ArgumentException>(() => singleSelectionQuestion.InitializeOptions(options));
        }
Example #7
0
        /// <summary>
        /// Evaluates a question, removing all notation and leaving the variables' names.
        /// </summary>
        /// <param name="question">Question to be evaluated.</param>
        /// <returns>Evaluated question.</returns>
        public Question Evaluate(Question question)
        {
            var selectionQuestion = question as SelectionQuestion;

            if (selectionQuestion != null)
            {
                SelectionQuestion aux;
                if (question is MultipleSelectionQuestion)
                {
                    aux = new MultipleSelectionQuestion
                    {
                        Description = selectionQuestion.Description,
                        ExamId      = selectionQuestion.ExamId,
                        Options     = selectionQuestion.Options,
                        Answers     = selectionQuestion.Answers,
                        Exam        = selectionQuestion.Exam,
                        Id          = selectionQuestion.Id,
                        Variables   = selectionQuestion.Variables
                    };
                }
                else
                {
                    aux = new SingleSelectionQuestion
                    {
                        Description = selectionQuestion.Description,
                        ExamId      = selectionQuestion.ExamId,
                        Options     = selectionQuestion.Options,
                        Answers     = selectionQuestion.Answers,
                        Exam        = selectionQuestion.Exam,
                        Id          = selectionQuestion.Id,
                        Variables   = selectionQuestion.Variables
                    };
                }

                aux.Description = aux.Description.Replace("%", string.Empty).Replace("|", string.Empty);

                foreach (var option in aux.Options)
                {
                    option.Description = option.Description.Replace("%", string.Empty).Replace("|", string.Empty);
                }

                return(aux);
            }

            return(null);
        }
Example #8
0
        public void GetRightAnswer_ReturnsTrueOption()
        {
            //Arrange
            var theTrueOption = new SingleSelectionQuestionOption("2nd option (true)", true);
            var options       = new List <SingleSelectionQuestionOption>()
            {
                new SingleSelectionQuestionOption("1st option (false)", false),
                theTrueOption,
                new SingleSelectionQuestionOption("3rd option (false)", false),
                new SingleSelectionQuestionOption("4th option (false)", false)
            };
            var singleSelectionQuestion = new SingleSelectionQuestion("Question text");

            singleSelectionQuestion.InitializeOptions(options);

            //Act
            var answer = singleSelectionQuestion.GetRightAnswer();

            //Assert
            Assert.True(answer.IsAnswer);
            Assert.Equal(theTrueOption.Text, answer.Text);
        }
Example #9
0
 public void UpdateQuestion(SingleSelectionQuestion question)
 {
     _dbContext.SingleSelectionQuestions.Update(question);
     _dbContext.SaveChanges();
 }
Example #10
0
 public void AddQuestion(SingleSelectionQuestion question)
 {
     _dbContext.SingleSelectionQuestions.Add(question);
     _dbContext.SaveChanges();
 }