コード例 #1
0
        public ActionResult CreateQuestion(QuestionEditViewModel vm)
        {
            List<string> messages = new List<string>();
            var val = validateQuestion(vm);

            vm.Id = null;
            try
            {

                if (val.Item1 == true)
                {
                    var question = CreateQuestionFromViewModel(vm);

                    QuestionManager.Insert(question);
                    UnitOfWork.Commit();

                    messages.Add("Question created succesfully.");
                }
                else
                {
                    messages.Add(val.Item2);
                }

            }
            catch (Exception)
            {
                //TODO: Add logging here
                throw;
            }

            return Json(val);
        }
コード例 #2
0
        private Tuple<bool, string> validateQuestion(QuestionEditViewModel vm)
        {
            if(String.IsNullOrWhiteSpace(vm.QuestionText))
                return new Tuple<bool, string>(false,"Question text is empty");

            if(vm.AnswerOptions==null)
                return  new Tuple<bool, string>(false,"Question must have at least 2 answer options");

            if(vm.AnswerOptions.Count<2)
                return new Tuple<bool, string>(false,"You need 2 or more answer options");

            if(!vm.AnswerOptions.Any(ans => ans.Correct))
                return new Tuple<bool, string>(false, "At least one answer needs to be correct");

            if(vm.AnswerOptions.Count(ans => String.IsNullOrWhiteSpace(ans.AnswerText)==true)>0)
                return new Tuple<bool, string>(false,"Question cannot contain empty answers");

            return  new Tuple<bool, string>(true,"Question data validated correctly");
        }
コード例 #3
0
        private Question CreateQuestionFromViewModel(QuestionEditViewModel vm)
        {
            Question q = new Question() {QuestionText = vm.QuestionText, Id = vm.Id, QuestionAnswerType =  vm.AnswerType};

                int id = 1;
            q.AnswerOptions = new List<Tuple<int, string, bool>>();

                foreach (AnswerOptionViewModel answerOptionViewModel in vm.AnswerOptions)
                {

                    q.AnswerOptions.Add(new Tuple<int, string, bool>(id,answerOptionViewModel.AnswerText,answerOptionViewModel.Correct));
                    id++;
                }

                return q;
        }