예제 #1
0
        //
        // GET: /QuestionGroup/

        public ActionResult Index()
        {
            var questionGroupVM = new QuestionGroupViewModel();

            questionGroupVM.QuestionGroupIsActiveList = new List <SelectListItem>();
            questionGroupVM.QuestionGroupIsActiveList.Add(new SelectListItem()
            {
                Text = "ทั้งหมด", Value = "all"
            });
            questionGroupVM.QuestionGroupIsActiveList.Add(new SelectListItem()
            {
                Text = "Active", Value = "true"
            });
            questionGroupVM.QuestionGroupIsActiveList.Add(new SelectListItem()
            {
                Text = "Inactive", Value = "false"
            });
            questionGroupVM.Status = true;

            questionGroupVM.SearchFilter = new QuestionGroupSearchFilter()
            {
                QuestionGroupName = null,
                ProductId         = null,
                Status            = "",
                PageNo            = 1,
                PageSize          = 15,
                SortField         = string.Empty,
                SortOrder         = "ASC"
            };

            return(View(questionGroupVM));
        }
예제 #2
0
        public QuestionnaireViewModel GetViewModel()
        {
            //TODO Diferent View Models

            var model = _questionnaireStoreModel;

            QuestionnaireViewModel schema = new QuestionnaireViewModel();

            schema.type       = model.type;
            schema.fieldGroup = new List <QuestionGroupViewModel>();

            foreach (QuestionGroup data in model.fieldGroup)
            {
                QuestionGroupViewModel questionGroup = new QuestionGroupViewModel();
                questionGroup.fieldGroup           = data.fieldGroup;
                questionGroup.hideExpression       = data.hideExpression;
                questionGroup.templateOptions      = data.templateOptions;
                questionGroup.expressionProperties = new Dictionary <string, string>();

                if (data.expressionProperties.Count() != 0)
                {
                    foreach (var y in data.expressionProperties)
                    {
                        questionGroup.expressionProperties.Add(y.Key, y.Expression);
                    }
                }

                schema.fieldGroup.Add(questionGroup);
            }
            return(schema);
        }
예제 #3
0
        public ActionResult SearchQuestionGroupList(QuestionGroupSearchFilter searchFilter)
        {
            Logger.Info(_logMsg.Clear().SetPrefixMsg("Search QuestionGroup").ToInputLogString());

            try
            {
                if (ModelState.IsValid)
                {
                    _questionGroupFacade = new QuestionGroupFacade();
                    QuestionGroupViewModel questionGroupVM = new QuestionGroupViewModel();
                    questionGroupVM.SearchFilter = searchFilter;

                    questionGroupVM.QuestionGroupList = _questionGroupFacade.GetQuestionGroupList(questionGroupVM.SearchFilter);
                    ViewBag.PageSize = questionGroupVM.SearchFilter.PageSize;

                    return(PartialView("~/Views/QuestionGroup/_QuestionGroupList.cshtml", questionGroupVM));
                }

                return(Json(new
                {
                    Valid = false,
                    Error = string.Empty
                }));
            }
            catch (Exception ex)
            {
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Search QuestionGroup").ToFailLogString());
                return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                                 this.ControllerContext.RouteData.Values["action"].ToString())));
            }
        }
예제 #4
0
        public QuestionnaireViewModel createViewModel()
        {
            QuestionnaireViewModel model = new QuestionnaireViewModel();

            model.type       = "type";
            model.fieldGroup = new List <QuestionGroupViewModel>();
            model.Id         = 1;

            // QuestionGroup
            var questionGroup = new QuestionGroupViewModel();

            questionGroup.fieldGroup           = new List <Question>();
            questionGroup.expressionProperties = new Dictionary <string, string>();
            questionGroup.hideExpression       = "hideExpressionCondition";
            questionGroup.Id = 1;
            questionGroup.templateOptions.label = "questionGroup 1";


            // Question
            var questionModel = new Question();

            questionModel.Id  = 1;
            questionModel.key = "questionModelKey";
            questionModel.templateOptions.Answer = "answer";
            questionModel.templateOptions.Answer = "question";
            questionModel.type = "inputfield";
            questionModel.templateOptions.Id = 1;

            // Add to store model
            model.fieldGroup.Add(questionGroup);
            questionGroup.expressionProperties.Add("key", "Expression");
            questionGroup.fieldGroup.Add(questionModel);

            return(model);
        }
예제 #5
0
        public ActionResult SearchQuestion(BootstrapParameters parameters, string questionName, string questionIdList)
        {
            if (ModelState.IsValid)
            {
                _questionGroupFacade = new QuestionGroupFacade();
                var questionGroupVM = new QuestionGroupViewModel();

                var totalCount = 0;

                List <QuestionItemEntity> list = _questionGroupFacade.SearchQuestionGroupQuestion(parameters.offset, parameters.limit, questionName, questionIdList, ref totalCount);

                return(Json(new BootstrapTableResult()
                {
                    total = totalCount,
                    rows = list.Select(item => new
                    {
                        id = item.QuestionId,
                        //                        action = string.Format("<a onClick='editQuestion({0})' class='btnEdit'><i class='fa fa-edit'></i></a>", item.QuestionId),
                        question_name = item.QuestionName,
                        status = item.Status.HasValue ? item.Status.Value ? "Active" : "Inactive" : "Inactive",
                        update_name = string.IsNullOrEmpty(item.UpdateUserName.FullName) ? item.CreateUserName.FullName : item.UpdateUserName.FullName,
                        update_date = !item.UpdateDate.HasValue ? DateUtil.ToStringAsDateTime(item.CreateDate) : DateUtil.ToStringAsDateTime(item.UpdateDate)
                    }).ToList()
                }));
            }

            return(Json(new
            {
                Valid = false,
                Error = string.Empty
            }));
        }
예제 #6
0
        public ActionResult AddQuestionGroup()
        {
            var model = new QuestionGroupViewModel();

            model.QuestionGroup = new QuestionGroup();
            return(View(model));
        }
예제 #7
0
 public static void UpdateQuestionGroup(this QuestionGroup qGroup, QuestionGroupViewModel qGroupVm)
 {
     qGroup.ID                   = qGroupVm.ID;
     qGroup.Index                = qGroupVm.Index;
     qGroup.IsKeyword            = qGroupVm.IsKeyWord;
     qGroup.FormQuestionAnswerID = qGroupVm.FormQuestionAnswerID;
     qGroup.BotID                = qGroupVm.BotID;
     qGroup.CreatedDate          = DateTime.Now;
 }
예제 #8
0
        public ActionResult AddQuestionGroup(QuestionGroupViewModel model)
        {
            var dbContext = new ApplicationDbContext();
            var qg        = dbContext.QuestionGroups.Add(model.QuestionGroup);

            dbContext.SaveChanges();

            return(RedirectToAction("AddQuestionGroup", new { id = qg.ID }));
        }
예제 #9
0
        public ActionResult EditQuestionGroup(QuestionGroupViewModel model)
        {
            var dbContext = new ApplicationDbContext();

            dbContext.Entry(model.QuestionGroup).State = EntityState.Modified;
            dbContext.SaveChanges();

            return(RedirectToAction("EditQuestionGroup", new { id = model.QuestionGroup.ID }));
        }
예제 #10
0
        public void TestWhenCreatedThenLoadQuestionCommandContainsCorrectGroupId()
        {
            //Assign
            QuestionGroup group = new QuestionGroup(10);

            //Act
            QuestionGroupViewModel viewModel = new QuestionGroupViewModel(group);

            //Assert
            Assert.True(((LoadQuestionCommand)viewModel.LoadQuestionCommand).GroupId == group.Id);
        }
예제 #11
0
        public void TestWhenAskLoadQuestionThatDonotExistsThenThrowArgumentOutOfRangeException()
        {
            //Assign
            QuestionGroupViewModel viewModel = new QuestionGroupViewModel(new QuestionGroup());

            Action action = () =>
            {
                //Act
                viewModel.LoadQuestionCommand.Execute(30);
            };

            //Assert
            Assert.Throws <ArgumentOutOfRangeException>(action);
        }
예제 #12
0
        public void TestWhenLoadQuestionThenQuestionMarkAsAnswered()
        {
            //Assign
            QuestionGroupViewModel viewModel = new QuestionGroupViewModel(new QuestionGroup(10, new List <Question>
            {
                new Question
                {
                    Cost = 30
                }
            }));

            //Act
            viewModel.LoadQuestionCommand.Execute(viewModel.Questions.First().Model.Cost);

            //Assert
            Assert.True(viewModel.Questions.First().IsAnswered);
        }
예제 #13
0
        public ActionResult EditQuestionGroup(Guid id)
        {
            var dbContext = new ApplicationDbContext();
            var qg        = dbContext.QuestionGroups.Find(id);

            var questions     = new List <Question>();
            var rules         = new List <Rule>();
            var rulesText     = string.Empty;
            var questionsText = string.Empty;

            try
            {
                var serializerQuestion = new XmlSerializer(typeof(List <Question>));
                using (var reader = new StringReader(qg.QuestionsXml))
                {
                    questions = (List <Question>)serializerQuestion.Deserialize(reader);
                }


                var serializerRule = new XmlSerializer(typeof(List <Rule>));
                using (var reader = new StringReader(qg.RulesXml))
                {
                    rules = (List <Rule>)serializerRule.Deserialize(reader);
                }

                rulesText     = string.Join("; ", rules.Select(x => x.ToString()));
                questionsText = string.Join("; ", questions.Select(x => x.ToString()));
            }
            catch (Exception e)
            {
                rulesText     = "Возможны ошибки формата правил";
                questionsText = "Возможны ошибки формата вопросов";
            }

            var model = new QuestionGroupViewModel
            {
                QuestionGroup = qg,
                RulesText     = rulesText,
                QuestionsText = questionsText
            };

            return(View(model));
        }
예제 #14
0
 public LoadQuestionCommand(QuestionGroupViewModel viewModel, int id)
 {
     GroupId    = id;
     _viewModel = viewModel;
 }
예제 #15
0
        public ActionResult RenderQuestionGroupList(string questionGroupList, string questionList, int?deleteId)
        {
            Logger.Info(_logMsg.Clear().SetPrefixMsg("Render QuestionGroup").ToInputLogString());

            try
            {
                if (ModelState.IsValid)
                {
                    var questionGroupTableModel = new QuestionGroupViewModel();
                    var questionDataList        = new JavaScriptSerializer().Deserialize <QuestionGroupTableModel[]>(questionList);
                    questionGroupTableModel.QuestionGroupTableList = new List <QuestionGroupTableModel>();

                    if (!string.IsNullOrEmpty(questionGroupList))
                    {
                        var questionGroupDataList = new JavaScriptSerializer().Deserialize <QuestionGroupTableModel[]>(questionGroupList);

                        foreach (var item in questionGroupDataList)
                        {
                            if (!deleteId.HasValue || deleteId != item.id)
                            {
                                var model = new QuestionGroupTableModel()
                                {
                                    id            = item.id,
                                    question_name = item.question_name
                                };

                                questionGroupTableModel.QuestionGroupTableList.Add(model);
                            }
                        }
                    }

                    foreach (var item in questionDataList)
                    {
                        if (!deleteId.HasValue || deleteId != item.id)
                        {
                            var model = new QuestionGroupTableModel()
                            {
                                id            = item.id,
                                question_name = item.question_name
                            };

                            questionGroupTableModel.QuestionGroupTableList.Add(model);
                        }
                    }

                    //                    questionGroupTableModel.QuestionGroupTableList = questionGroupTableModel.QuestionGroupTableList.OrderBy(q => q.id).ToList();

                    return(PartialView("~/Views/QuestionGroup/_RenderQuestionList.cshtml", questionGroupTableModel));
                }

                return(Json(new
                {
                    Valid = false,
                    Error = string.Empty
                }));
            }
            catch (Exception ex)
            {
                Logger.Info(_logMsg.Clear().SetPrefixMsg("Render QuestionGroup").ToFailLogString());
                return(Error(new HandleErrorInfo(ex, this.ControllerContext.RouteData.Values["controller"].ToString(),
                                                 this.ControllerContext.RouteData.Values["action"].ToString())));
            }
        }