/// <summary> /// 创建问卷题目 /// </summary> /// <param name="subject">问卷题目</param> /// <param name="user"></param> /// <param name="message"></param> /// <returns></returns> public QssResult QssCreateQuesSubject(JArray subjects, User user, Question question, out string message) { foreach (JObject subject in subjects) { // 创建题目 QuesSubject quesSubject = new QuesSubject() { Content = (string)subject["Content"], Question = question }; // 题目类型 string type = (string)subject["Type"]; quesSubject.Type = // 单选题 type == QssQuesSubType.Radio.ToString() ? QssQuesSubType.Radio : // 多选题 type == QssQuesSubType.Multiselect.ToString() ? QssQuesSubType.Multiselect : // 主观题 type == QssQuesSubType.Subjective.ToString() ? QssQuesSubType.Subjective : // 判断题 QssQuesSubType.Judge; // 保存题目 QssResult result = QssSaveSubject(quesSubject, out message); if (result != QssResult.Success) { return(result); } // 创建选项 if (quesSubject.Type == QssQuesSubType.Subjective) { continue; // 主观题无选项 } result = new QuesOptionService().QssCreateQuesOption((JArray)subject["Options"], user, quesSubject, out message); if (result != QssResult.Success) { return(result); } } message = "创建问卷题目成功!"; return(QssResult.Success); }
/// <summary> /// 保存问卷题目 /// </summary> /// <param name="question">当前问卷</param> /// <param name="subjects">题目列表</param> /// <param name="message">处理结果信息</param> /// <returns></returns> public QssResult QssSaveQuesWtLog(JArray subjects, Question question, out List <GetWtQuesSubject> wtSubjects, out string message) { // 存放题目和题目列表的临时变量 var getWtSubjects = new List <GetWtQuesSubject>(); foreach (JObject subject in subjects) { // 获取题目Id int subjectId = Convert.ToInt32(subject["Id"]); // 获取该题目 var quesSubject = question.QuesSubjects.FirstOrDefault(s => s.Id == subjectId); if (quesSubject == null) { wtSubjects = null; message = "获取题目失败!"; QssLogHelper.Log("获取题目失败", "在保存填写记录时,获取题目Id失败", QssLogType.Error); return(QssResult.Fail); } // 当前题目信息 var wtQuesSubject = new GetWtQuesSubject { Id = quesSubject.Id, Content = quesSubject.Content, Num = quesSubject.QuesOptions.Count(), Type = quesSubject.Type.ToString() }; // 获取题目类型 string subjectType = (string)subject["Type"]; if (subjectType == QssQuesSubType.Subjective.ToString()) { // 获取主观题答案 string answer = (string)subject["Content"]; if (string.IsNullOrWhiteSpace(quesSubject.Answer)) { quesSubject.Answer = answer; } else { quesSubject.Answer += "@@@@@" + answer; } // 保存主观题答案 try { DbSession.QuesSubjectDal.Update(quesSubject); DbSession.SaveChanges(); // 保存成功 wtQuesSubject.SubAnswers = answer; getWtSubjects.Add(wtQuesSubject); continue; } catch (Exception exception) { // 保存失败 wtSubjects = null; message = "保存主观题答案失败! 原因:" + exception.Message; QssLogHelper.Log("保存答案失败", "在保存填写记录时,保存主观题答案失败", QssLogType.Error, exception); return(QssResult.Fail); } } // 保存选项答案 var quesOptionService = new QuesOptionService(); QssResult result = quesOptionService.QssSaveQuesOption((JArray)subject["Options"], quesSubject, out List <GetWtQuesOption> wtOptions, out message); if (result != QssResult.Success) { wtSubjects = null; return(result); } wtQuesSubject.ObjAnswers = wtOptions.ToArray(); // 获取选项列表 if (quesSubject.Type != QssQuesSubType.Subjective) { var wtQuesOptions = new List <GetQuesOption>(); foreach (var option in quesSubject.QuesOptions) { wtQuesOptions.Add(new GetQuesOption() { Id = option.Id, Content = option.Content }); } wtQuesSubject.Options = wtQuesOptions.OrderByDescending(p => p.Id).ToArray(); getWtSubjects.Add(wtQuesSubject); } } wtSubjects = getWtSubjects.OrderByDescending(p => p.Id).ToList(); message = "保存问卷结果成功!"; return(QssResult.Success); }