public void ProcessRequest(HttpContext context) { RequestModel requestModel = new RequestModel(); try { requestModel = JsonConvert.DeserializeObject <RequestModel>(context.Request["data"]); } catch (Exception ex) { resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = ex.Message; bllQuestion.ContextResponse(context, resp); return; } if (string.IsNullOrWhiteSpace(requestModel.questionnaire_name)) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "请输入问卷名称"; bllQuestion.ContextResponse(context, resp); return; } if (requestModel.question_list == null || requestModel.question_list.Count <= 0) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "请至少添加一个问题"; bllQuestion.ContextResponse(context, resp); return; } foreach (var item in requestModel.question_list) { if (item.question_type != 2 && (item.answer_list == null || item.answer_list.Count <= 0)) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "选择题至少需要一个选项"; bllQuestion.ContextResponse(context, resp); return; } } BLLTransaction tran = new BLLTransaction();//事务 try { Questionnaire QuestionnaireModel = new Questionnaire();//数据库问卷表模型 QuestionnaireModel.QuestionnaireID = int.Parse(bllQuestion.GetGUID(TransacType.AddQuestionnaire)); QuestionnaireModel.QuestionnaireName = requestModel.questionnaire_name; QuestionnaireModel.QuestionnaireContent = requestModel.questionnaire_content; QuestionnaireModel.QuestionnaireStopDate = requestModel.questionnaire_stopdate; QuestionnaireModel.QuestionnaireVisible = requestModel.questionnaire_visible; QuestionnaireModel.QuestionnaireImage = requestModel.questionnaire_image; QuestionnaireModel.QuestionnaireSummary = requestModel.questionnaire_summary; QuestionnaireModel.WebsiteOwner = bllQuestion.WebsiteOwner; QuestionnaireModel.InsertDate = DateTime.Now; QuestionnaireModel.AddScore = requestModel.add_score; if (!bllQuestion.Add(QuestionnaireModel, tran))//添加问卷表 { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "添加问卷失败"; bllQuestion.ContextResponse(context, resp); return; } foreach (var item in requestModel.question_list)//添加问题表 { ZentCloud.BLLJIMP.Model.Question question = new ZentCloud.BLLJIMP.Model.Question(); question.QuestionID = int.Parse(bllQuestion.GetGUID(TransacType.AddQuestion)); question.QuestionnaireID = QuestionnaireModel.QuestionnaireID; question.QuestionName = item.question_name; question.QuestionType = item.question_type; question.IsRequired = item.is_required; if (!bllQuestion.Add(question, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "添加问题失败"; bllQuestion.ContextResponse(context, resp); return; } foreach (var AnswerItem in item.answer_list) { Answer answer = new Answer(); answer.AnswerID = int.Parse(bllQuestion.GetGUID(TransacType.AddAnswer)); answer.AnswerName = AnswerItem.answer_name; answer.IsCorrect = AnswerItem.is_correct; answer.QuestionID = question.QuestionID; answer.QuestionnaireID = QuestionnaireModel.QuestionnaireID; if (!bllQuestion.Add(answer, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "添加选项失败"; bllQuestion.ContextResponse(context, resp); return; } } } tran.Commit(); resp.isSuccess = true; resp.errcode = (int)APIErrCode.IsSuccess; } catch (Exception ex) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = ex.Message; } bllQuestion.ContextResponse(context, resp); }
public void ProcessRequest(HttpContext context) { //forceDelete等于1时,进行强制删除,会清除原有答题进行删除 string forceDelete = context.Request["force_delete"]; RequestModel requestModel = new RequestModel(); try { requestModel = JsonConvert.DeserializeObject <RequestModel>(context.Request["data"]); } catch (Exception ex) { resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = ex.Message; bllQuestion.ContextResponse(context, resp); return; } if (requestModel.id == 0) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "请输入Id"; bllQuestion.ContextResponse(context, resp); return; } Questionnaire questionnaireModel = bllQuestion.GetByKey <Questionnaire>("QuestionnaireID", requestModel.id.ToString()); if (questionnaireModel == null) { resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "问卷没有找到"; bllQuestion.ContextResponse(context, resp); return; } if (forceDelete != "1") { if (bllQuestion.GetCountByKey <QuestionnaireRecord>("QuestionnaireID", requestModel.id.ToString()) > 0) { resp.errcode = (int)APIErrCode.LotteryHaveRecord; resp.errmsg = string.Format("已经有人答题,不能进行修改"); bllQuestion.ContextResponse(context, resp); return; } } if (string.IsNullOrWhiteSpace(requestModel.questionnaire_name)) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "请输入问卷名称"; bllQuestion.ContextResponse(context, resp); return; } if (requestModel.question_list == null || requestModel.question_list.Count <= 0) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "请至少添加一个问题"; bllQuestion.ContextResponse(context, resp); return; } foreach (var item in requestModel.question_list) { if (item.question_type != 2 && (item.answer_list == null || item.answer_list.Count <= 0)) { resp.errcode = (int)APIErrCode.PrimaryKeyIncomplete; resp.errmsg = "选择题至少需要一个选项"; bllQuestion.ContextResponse(context, resp); return; } } List <RequestQuestionModel> addRequestQuestionList = requestModel.question_list.Where(p => p.id == 0).ToList(); List <RequestQuestionModel> updateRequestQuestionList = requestModel.question_list.Where(p => p.id > 0).ToList(); List <ZentCloud.BLLJIMP.Model.Question> deleteQuestionList = new List <ZentCloud.BLLJIMP.Model.Question>(); List <ZentCloud.BLLJIMP.Model.Question> AddQuestionList = new List <ZentCloud.BLLJIMP.Model.Question>(); List <ZentCloud.BLLJIMP.Model.Question> UpdateQuestionList = new List <ZentCloud.BLLJIMP.Model.Question>(); #region 参数对应 检查问题 questionnaireModel.QuestionnaireName = requestModel.questionnaire_name; questionnaireModel.QuestionnaireContent = requestModel.questionnaire_content; questionnaireModel.QuestionnaireStopDate = requestModel.questionnaire_stopdate; questionnaireModel.QuestionnaireVisible = requestModel.questionnaire_visible; questionnaireModel.QuestionnaireImage = requestModel.questionnaire_image; questionnaireModel.QuestionnaireSummary = requestModel.questionnaire_summary; questionnaireModel.AddScore = requestModel.add_score; List <ZentCloud.BLLJIMP.Model.Question> OldQuestionList = bllQuestion.GetListByKey <ZentCloud.BLLJIMP.Model.Question>("QuestionnaireID", requestModel.id.ToString());//旧问题 foreach (var item in OldQuestionList) { RequestQuestionModel nQuestion = updateRequestQuestionList.FirstOrDefault(p => p.id == item.QuestionID); if (nQuestion == null)//该问题被删除了 { deleteQuestionList.Add(item); } else { item.QuestionName = nQuestion.question_name; item.QuestionType = nQuestion.question_type; item.IsRequired = nQuestion.is_required; List <RequestAnswerModel> AddRequestAnswerList = nQuestion.answer_list.Where(p => p.id == 0).ToList(); List <RequestAnswerModel> UpdateRequestAnswerList = nQuestion.answer_list.Where(p => p.id > 0).ToList(); List <Answer> OldAnswerList = bllQuestion.GetListByKey <Answer>("QuestionID", item.QuestionID.ToString());//旧选项 if (item.QuestionType == 2 && OldAnswerList.Count > 0) { for (int i = 0; i < OldAnswerList.Count; i++) { OldAnswerList[i].PostType = -1; } item.Answers = OldAnswerList; } else { List <Answer> AnswerList = new List <Answer>(); foreach (var AnswerItem in OldAnswerList) { RequestAnswerModel nAnswer = UpdateRequestAnswerList.FirstOrDefault(p => p.id == AnswerItem.AnswerID); if (nAnswer == null)//该问题被删除了 { AnswerItem.PostType = -1; AnswerList.Add(AnswerItem); } else { AnswerItem.AnswerName = nAnswer.answer_name; AnswerItem.IsCorrect = nAnswer.is_correct; AnswerItem.PostType = 2; AnswerList.Add(AnswerItem); } } foreach (var AnswerItem in AddRequestAnswerList) { Answer answer = new Answer(); answer.QuestionID = item.QuestionID; answer.QuestionnaireID = questionnaireModel.QuestionnaireID; answer.AnswerName = AnswerItem.answer_name; answer.IsCorrect = AnswerItem.is_correct; answer.PostType = 1; AnswerList.Add(answer); } item.Answers = AnswerList; } UpdateQuestionList.Add(item); } } foreach (var item in addRequestQuestionList) { ZentCloud.BLLJIMP.Model.Question question = new ZentCloud.BLLJIMP.Model.Question(); question.QuestionName = item.question_name; question.QuestionType = item.question_type; question.IsRequired = item.is_required; question.QuestionnaireID = questionnaireModel.QuestionnaireID; List <Answer> AnswerList = new List <Answer>(); foreach (var AnswerItem in item.answer_list) { Answer answer = new Answer(); answer.AnswerName = AnswerItem.answer_name; answer.IsCorrect = AnswerItem.is_correct; answer.QuestionnaireID = questionnaireModel.QuestionnaireID; answer.PostType = 1; AnswerList.Add(answer); } question.Answers = AnswerList; AddQuestionList.Add(question); } #endregion BLLTransaction tran = new BLLTransaction();//事务 try { if (!bllQuestion.Update(questionnaireModel, tran))//修改问卷表 { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "修改问卷失败"; bllQuestion.ContextResponse(context, resp); return; } if (bllQuestion.DeleteByKey <QuestionnaireRecord>("QuestionnaireID", questionnaireModel.QuestionnaireID.ToString(), tran) < 0) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "清除旧答题记录失败"; bllQuestion.ContextResponse(context, resp); return; } if (bllQuestion.DeleteByKey <QuestionnaireRecordDetail>("QuestionnaireID", questionnaireModel.QuestionnaireID.ToString(), tran) < 0) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "清除旧答题记录详情失败"; bllQuestion.ContextResponse(context, resp); return; } if (deleteQuestionList.Count > 0) { foreach (var item in deleteQuestionList) { if (bllQuestion.Delete(item, tran) <= 0) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "删除旧问题失败"; bllQuestion.ContextResponse(context, resp); return; } if (bllQuestion.DeleteByKey <Answer>("QuestionID", item.QuestionID.ToString(), tran) < 0) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "清除旧选项失败"; bllQuestion.ContextResponse(context, resp); return; } } } if (UpdateQuestionList.Count > 0) { foreach (var item in UpdateQuestionList) { if (!bllQuestion.Update(item, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "更新问题失败"; bllQuestion.ContextResponse(context, resp); return; } foreach (var AnswerItem in item.Answers) { if (AnswerItem.PostType == -1) { if (bllQuestion.Delete(AnswerItem, tran) <= 0) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "删除选项失败"; bllQuestion.ContextResponse(context, resp); return; } } else if (AnswerItem.PostType == 1) { AnswerItem.AnswerID = Convert.ToInt32(bllQuestion.GetGUID(TransacType.AddAnswer)); AnswerItem.QuestionID = item.QuestionID; if (!bllQuestion.Add(AnswerItem, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "新增选项失败"; bllQuestion.ContextResponse(context, resp); return; } } else if (AnswerItem.PostType == 2) { if (!bllQuestion.Update(AnswerItem, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "更新选项失败"; bllQuestion.ContextResponse(context, resp); return; } } } } } if (AddQuestionList.Count > 0) { foreach (var item in AddQuestionList)//添加问题表 { item.QuestionID = int.Parse(bllQuestion.GetGUID(TransacType.AddQuestion)); if (!bllQuestion.Add(item, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "添加问题失败"; bllQuestion.ContextResponse(context, resp); return; } foreach (var AnswerItem in item.Answers) { AnswerItem.AnswerID = Convert.ToInt32(bllQuestion.GetGUID(TransacType.AddAnswer)); AnswerItem.QuestionID = item.QuestionID; if (!bllQuestion.Add(AnswerItem, tran)) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = "新增选项失败"; bllQuestion.ContextResponse(context, resp); return; } } } } tran.Commit(); resp.isSuccess = true; resp.errcode = (int)APIErrCode.IsSuccess; } catch (Exception ex) { tran.Rollback(); resp.errcode = (int)APIErrCode.OperateFail; resp.errmsg = ex.Message; } bllQuestion.ContextResponse(context, resp); }