public IActionResult ShowResults(int surveyId)
        {
            StatisticsModel model = new StatisticsModel();

            model.Survey            = surveyService.GetSurvey(surveyId);
            model.NumberOfResponses = statisticsService.GetNumerOfResponsesBySurvey(surveyId);

            model.Questions = questionService.GetQuestionsForSurvey(surveyId);

            model.QuestionStatistics = new List <QuestionStatistics>();
            foreach (var question in model.Questions)
            {
                QuestionStatistics questionStatistics = new QuestionStatistics();
                questionStatistics.Question             = question;
                questionStatistics.QuestionOptionModels = new List <QuestionOptionModel>();

                question.Options = questionService.GetOptionsForQuestion(question.QuestionId);

                foreach (var option in question.Options)
                {
                    QuestionOptionModel questionOptionModel = new QuestionOptionModel();
                    questionOptionModel.QuestionOption = option;
                    questionOptionModel.countQuestionOptionSelected = questionService.GetCountQuestionOptionSelectById(option.QuestionOptionId);
                    questionStatistics.QuestionOptionModels.Add(questionOptionModel);
                }

                model.QuestionStatistics.Add(questionStatistics);
            }

            return(View("Views/Statistics/Results.cshtml", model));
        }
Пример #2
0
        public IHttpActionResult GetQuestionOption()
        {
            ChatBotProcessor processor = new ChatBotProcessor(new DbDataAccessLayer());

            try
            {
                QuestionOptionModel questionOption = processor.Process(0, null);
                if (questionOption == null)
                {
                    return(NotFound());
                }
                return(Ok(questionOption));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.BadRequest, ex.Message));
            }
        }
Пример #3
0
        public IHttpActionResult GetQuestionOption(int PreviousQuestion, string OptionSelected)
        {
            ChatBotProcessor processor = new ChatBotProcessor(new DbDataAccessLayer());

            try
            {
                QuestionOptionModel questionOption = processor.Process(PreviousQuestion, OptionSelected);
                if (questionOption == null)
                {
                    return(NotFound());
                }
                return(Ok(questionOption));
            }
            catch (Exception ex)
            {
                return(Content(HttpStatusCode.BadRequest, "Parameter entered are incorrect"));
            }
        }
Пример #4
0
        /// <summary>
        ///     找根选项 (递归)
        /// </summary>
        /// <param name="questionOptionModel"></param>
        /// <param name="questionOptionModels"></param>
        /// <returns></returns>
        private QuestionOptionModel GetRootOption(QuestionOptionModel questionOptionModel,
                                                  List <QuestionOptionModel> questionOptionModels)
        {
            var parentOptionId = questionOptionModel.QuestionParentID;

            if (questionOptionModel.QuestionParentID == 0)
            {
                return(questionOptionModel);
            }
            var finderOption = questionOptionModels.FirstOrDefault(p => p.PKID == parentOptionId);

            if (finderOption != null && finderOption.QuestionParentID == 0)
            {
                return(finderOption);
            }

            return(GetRootOption(finderOption, questionOptionModels));
        }
Пример #5
0
        /// <summary>
        /// 提交问卷
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static async Task <OperationResult <bool> > SubmitQuestionnaireAsync(Models.Requests.SubmitQuestionnaireRequest model)
        {
            bool result   = false;
            var  userInfo = await DalUserQuestionnaireURL.GetUserQuestionnaireURLInfo(model.PageID);

            if (userInfo != null)
            {
                //有效期验证(投诉单问卷有效期为7天)
                if (userInfo.CreateDateTime.Date.AddDays(7) < DateTime.Now.Date)
                {
                    return(OperationResult.FromError <bool>(nameof(Resource.Questionnaire_Overdue), string.Format(Resource.Questionnaire_Overdue)));
                }

                var questionnaireInfo = await DalQuestionnaire.GetQuestionnaireInfoByNo(userInfo.QuestionnaireNo);

                if (questionnaireInfo != null)
                {
                    var questionList = await DalQuestion.GetQuestionList(questionnaireInfo.QuestionnaireID);

                    var optionList = await DalQuestionOption.GetQuestionOptionList(questionnaireInfo.QuestionnaireID);

                    List <QuestionnaireAnswerRecordModel> answerRecordList = new List <QuestionnaireAnswerRecordModel>();
                    QuestionnaireAnswerRecordModel        answerRecord     = null;

                    #region 装载数据
                    foreach (var item in model.QuestionList)
                    {
                        // 验证数据
                        var questionInfo = questionList.Where(t => t.QuestionID == item.QuestionID).FirstOrDefault();
                        if (questionInfo != null)
                        {
                            var answerQuestionInfo = model.QuestionList.Where(t => t.QuestionID == item.QuestionID).FirstOrDefault();
                            if (answerQuestionInfo != null)
                            {
                                //是否必填验证
                                if (questionInfo.IsRequired == 1)
                                {
                                    if (answerQuestionInfo != null)
                                    {
                                        if (answerQuestionInfo.AnswerOptionList == null || !answerQuestionInfo.AnswerOptionList.Any())
                                        {
                                            return(OperationResult.FromError <bool>(nameof(Resource.ParameterError_IsRequired), string.Format(Resource.ParameterError_IsRequired, questionInfo.QuestionID)));
                                        }
                                    }
                                }
                                //最大字符验证
                                if (questionInfo.IsValidateMaxChar == 1)
                                {
                                    if (answerQuestionInfo != null)
                                    {
                                        foreach (var option in answerQuestionInfo.AnswerOptionList)
                                        {
                                            if (option.AnswerText.Length > questionInfo.MaxChar)
                                            {
                                                return(OperationResult.FromError <bool>(nameof(Resource.ParameterError_OverMaxChar), string.Format(Resource.ParameterError_OverMaxChar, questionInfo.QuestionID)));
                                            }
                                        }
                                    }
                                }
                                QuestionOptionModel optionInfo = null;
                                foreach (var option in item.AnswerOptionList)
                                {
                                    answerRecord        = new QuestionnaireAnswerRecordModel();
                                    answerRecord.UserID = userInfo.UserID;
                                    if (questionnaireInfo.QuestionnaireType < 2)    //售后问卷
                                    {
                                        answerRecord.ObjectID = userInfo.ComplaintsID;
                                    }
                                    else if (questionnaireInfo.QuestionnaireType == 2) //售前问卷
                                    {
                                        answerRecord.ObjectID = userInfo.OrderID;
                                    }
                                    answerRecord.QuestionnaireID   = questionnaireInfo.QuestionnaireID;
                                    answerRecord.QuestionnaireName = questionnaireInfo.QuestionnaireName;
                                    answerRecord.QuestionID        = item.QuestionID;

                                    answerRecord.QuestionName = questionInfo.QuestionTitle;
                                    answerRecord.QuestionType = questionInfo.QuestionType;
                                    answerRecord.AnswerText   = option.AnswerText;

                                    optionInfo = optionList.Where(t => t.OptionID == option.AnswerOptionID).FirstOrDefault();
                                    if (optionInfo != null)
                                    {
                                        answerRecord.AnswerOptionID      = optionInfo.OptionID;
                                        answerRecord.AnswerOptionContent = optionInfo.OptionContent;
                                    }
                                    answerRecordList.Add(answerRecord);
                                }
                            }
                        }
                    }
                    #endregion

                    await DalQuestionnaireAnswerRecord.SubmitQuestionnaire(answerRecordList);

                    result = true;
                }
            }
            else
            {
                return(OperationResult.FromError <bool>(nameof(Resource.Questionnaire_NotExist), string.Format(Resource.Questionnaire_NotExist)));
            }

            return(OperationResult.FromResult(result));
        }