示例#1
0
        public Task CreateQuestion(QuestionApiModel question)
        {
            Question questionModel = question.ToQuestion();

            using (DbContextTransaction dbTran = _context.Database.BeginTransaction())
            {
                try
                {
                    _context.Questions.Add(questionModel);
                    _context.SaveChanges();

                    var options = question.Options?.Select(x => x.ToOption(questionModel.Id));
                    _context.Options.AddRange(options);
                    _context.SaveChanges();
                    dbTran.Commit();
                }
                catch (DbEntityValidationException ex)
                {
                    dbTran.Rollback();
                    throw;
                }
            }

            return(Task.FromResult(0));
        }
        public QuestionApiModel AddQuestion(QuestionApiModel questionApiModel)
        {
            Question question = new Question()
            {
                QuestionText = questionApiModel.QuestionText,
                IsOpenToVotes = questionApiModel.IsOpenToVotes
            };

            return m_questionRepository.Add(question).ToApiModel();
        }
        public static QuestionApiModel ToApiModel(this Question question)
        {
            QuestionApiModel apiModel = new QuestionApiModel()
            {
                Id = question.Id,
                QuestionText = question.QuestionText,
                IsOpenToVotes = question.IsOpenToVotes,
                Votes = question.Votes
            };

            return apiModel;
        }
示例#4
0
 public static Question ToQuestion(this QuestionApiModel questions)
 {
     if (questions == null)
     {
         return(null);
     }
     return(new Question
     {
         Name = questions.Name,
         IsActive = questions.IsActive,
         QuizId = questions.QuizId
     });
 }
        public void AddQuestion()
        {
            QuestionApiModel questionApiModelToAdd = new QuestionApiModel
            {
                QuestionText = "Test Question",
                IsOpenToVotes = false
            };

            Question question = new Question
            {
                QuestionText = "Test Question",
                IsOpenToVotes = false
            };

            var questionRepoMock = new Mock<IQuestionRepository>();
            questionRepoMock.Setup(repo => repo.Add(It.IsAny<Question>())).Returns(question);

            QuestionsController controller = new QuestionsController(questionRepoMock.Object);
            var result = controller.AddQuestion(questionApiModelToAdd);

            Assert.AreEqual(question.QuestionText, result.QuestionText);
            Assert.IsInstanceOf<QuestionApiModel>(result);
        }
示例#6
0
        public Task UpdateQuestion(QuestionApiModel questionApiModel)
        {
            var question = _context.Questions.FirstOrDefault(x => x.Id == questionApiModel.Id);

            using (DbContextTransaction dbTran = _context.Database.BeginTransaction())
            {
                try
                {
                    question.Name = questionApiModel.Name;
                    _context.Entry(question).State = EntityState.Modified;

                    List <Option> options = new List <Option>();
                    questionApiModel.Options.ToList().ForEach(
                        x => options.Add(question.Options
                                         .Where(o => o.Code == x.Code)
                                         .Select(s => { s.Name = x.Name; return(s); })
                                         .FirstOrDefault()));


                    foreach (var option in options)
                    {
                        _context.Entry(option).State = EntityState.Modified;
                    }

                    _context.SaveChanges();
                    dbTran.Commit();
                }
                catch (DbEntityValidationException ex)
                {
                    dbTran.Rollback();
                    throw;
                }
            }

            return(Task.FromResult(0));
        }
示例#7
0
        public IHttpActionResult UpdateQuestion([FromBody] QuestionApiModel question)
        {
            var response = _questionQueryServices.UpdateQuestion(question);

            return(Ok(response));
        }
 public void UpdateQuestion(QuestionApiModel questionApiModel)
 {
     m_questionRepository.UpdateIsOpenToVotes(questionApiModel.Id, questionApiModel.IsOpenToVotes);
 }