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)); }
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)); } }
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")); } }
/// <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)); }
/// <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)); }