/// <summary> /// 检查用户是否已提交问卷 /// </summary> /// <param name="pageId"></param> /// <returns></returns> public static async Task <bool> CheckIsAnswered(Guid pageId) { bool result = false;//未提交问卷 var userInfo = await DalUserQuestionnaireURL.GetUserQuestionnaireURLInfo(pageId); if (userInfo != null) { var questionnaireInfo = await DalQuestionnaire.GetQuestionnaireInfoByNo(userInfo.QuestionnaireNo); if (questionnaireInfo != null) { QuestionnaireAnswerRecordModel answerRecordInfo = null; if (questionnaireInfo.QuestionnaireType == 1) //售后问卷 { answerRecordInfo = await DalQuestionnaireAnswerRecord.GetQuestionnaireAnswerRecordInfo(userInfo.UserID, userInfo.ComplaintsID); } else if (questionnaireInfo.QuestionnaireType == 2) //售前问卷 { answerRecordInfo = await DalQuestionnaireAnswerRecord.GetQuestionnaireAnswerRecordInfo(userInfo.UserID, userInfo.OrderID); } if (answerRecordInfo != null) { result = true;//已提交问卷 } } } return(result); }
/// <summary> /// 提交问卷 回答 /// </summary> /// <param name="helper"></param> /// <param name="model"></param> /// <returns></returns> public static async Task <long> SubmitQuestionnaire(BaseDbHelper helper, QuestionnaireAnswerRecordModel model) { var sql = @" INSERT INTO [Activity].[dbo].[QuestionnaireAnswerRecord] ([UserID] ,[QuestionnaireID] ,[QuestionnaireName] ,[QuestionID] ,[QuestionName] ,[QuestionType] ,[AnswerText] ,[AnswerOptionID] ,[AnswerOptionContent] ,[AnswerDate] ,[QuestionScore] ,[ObjectID] ,[CreateDateTime] ,[LastUpdateDateTime] ,[IsDeleted]) VALUES (@UserID ,@QuestionnaireID ,@QuestionnaireName ,@QuestionID ,@QuestionName ,@QuestionType ,@AnswerText ,@AnswerOptionID ,@AnswerOptionContent ,@AnswerDate ,@QuestionScore ,@ObjectID ,getdate() ,getdate() ,0); SELECT SCOPE_IDENTITY(); "; try { using (var cmd = new SqlCommand(sql)) { cmd.AddParameter("@UserID", model.UserID); cmd.AddParameter("@QuestionnaireID", model.QuestionnaireID); cmd.AddParameter("@QuestionnaireName", model.QuestionnaireName ?? ""); cmd.AddParameter("@QuestionID", model.QuestionID); cmd.AddParameter("@QuestionName", model.QuestionName ?? ""); cmd.AddParameter("@QuestionType", model.QuestionType); cmd.AddParameter("@AnswerText", model.AnswerText ?? ""); cmd.AddParameter("@AnswerOptionID", model.AnswerOptionID); cmd.AddParameter("@AnswerOptionContent", model.AnswerOptionContent ?? ""); cmd.AddParameter("@AnswerDate", model.AnswerDate); cmd.AddParameter("@QuestionScore", model.QuestionScore); cmd.AddParameter("@ObjectID", model.ObjectID); var result = await helper.ExecuteScalarAsync(cmd); return(Convert.ToInt64(result)); } } catch (Exception ex) { Logger.Error($"DB异常=>{nameof(SubmitQuestionnaire)} =>{ex}"); throw ex; } }
/// <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)); }