public JsonResult UpdateQgroup(QUESTIONGROUP_OBJ obj) { QUESTIONTYPE_BUS busQuestiontype = new QUESTIONTYPE_BUS(); QUESTIONTYPE_OBJ objQuestiontype = busQuestiontype.GetByID(new QUESTIONTYPE_OBJ.BusinessObjectID(obj.QUESTIONTYPECODE)); busQuestiontype.CloseConnection(); QUESTIONGROUP_BUS bus = new QUESTIONGROUP_BUS(); int ret = 0; int add = 0; //kiểm tra tồn tại cho trường hợp sửa var objTemp = !string.IsNullOrEmpty(obj.CODE) ? bus.GetByID(new QUESTIONGROUP_OBJ.BusinessObjectID(obj.CODE)) : new QUESTIONGROUP_OBJ(); //Lỗi phần dưới đưa lên if (ret < 0 || objQuestiontype == null) { //đóng kết nối trước khi trả về bus.CloseConnection(); //ban ghi sửa đã bị xóa return(Json(new { sussess = ret }, JsonRequestBehavior.AllowGet)); } //hết kiểm tra tồn tại bản ghi objTemp.EDITTIME = DateTime.Now; //Thời điểm sủa bản ghi objTemp.EDITUSER = _ses.loginCode; //Người sửa bản ghi objTemp.CODEVIEW = obj.CODEVIEW; objTemp.NAME = obj.NAME; objTemp.SUBJECTCODE = obj.SUBJECTCODE; objTemp.SUBJECTCONTENTCODE = obj.SUBJECTCONTENTCODE; objTemp.NOTE = obj.NOTE; objTemp.LOCK = obj.LOCK; objTemp.CONTENT = obj.CONTENT; objTemp.QUESTIONTYPECODE = obj.QUESTIONTYPECODE; objTemp.QUESTIONUSECODELIST = obj.QUESTIONUSECODELIST; objTemp.MARK = obj.MARK; List <string> listSourcePath = _ses.tSOURCEPATHSESSION; List <string> listDestinationPath = _ses.tDESTINATIONPATHSESSION; if (listDestinationPath != null) { for (int i = 0; i < listSourcePath.Count; i++) { if (objTemp.CONTENT.Contains((listSourcePath[i]))) { objTemp.CONTENT = objTemp.CONTENT.Replace(listSourcePath[i], listDestinationPath[i]); } } } QUESTION_BUS busQuestion = new QUESTION_BUS(); QUESTION_OBJ objQuestion = null; ANSWER_BUS busAnswer = new ANSWER_BUS(); ANSWER_OBJ objAnser = null; //Dành cho danh sách các phương pháp sử dụng // obj_temp.THEORDER = obj.THEORDER; //Kiểm tra tình trạng sửa hay là thêm mới if (string.IsNullOrEmpty(obj.CODE)) { //Thêm mới add = 1; //Sinh mã objTemp.CODE = bus.genNextCode(obj); objTemp.LOCKDATE = DateTime.Now; //Sinh tự động các bản ghi theo yêu cầu switch (objQuestiontype.CODEVIEW) { case "WR": //Tự động sinh ra câu hỏi objQuestion = new QUESTION_OBJ { QUESTIONGROUPCODE = objTemp.CODE }; objQuestion.CODE = busQuestion.genNextCode(objQuestion); objQuestion.NAME = "Câu hỏi cho:" + objTemp.NAME; objQuestion.MARK = objTemp.MARK; //Tự động sinh ra câu tra lời objAnser = new ANSWER_OBJ(); objAnser.CODE = busAnswer.genNextCode(objAnser); objAnser.QUESTIONCODE = objQuestion.CODE; objAnser.QUESTIONGROUPCODE = objTemp.CODE; objAnser.CODEVIEW = "1"; objAnser.THEORDER = 1; objAnser.NAME = objTemp.NAME; objAnser.CONTENT = ""; objAnser.TRUEANSWER = 1; break; case "LA": objQuestion = new QUESTION_OBJ { QUESTIONGROUPCODE = objTemp.CODE }; objQuestion.CODE = busQuestion.genNextCode(objQuestion); objQuestion.NAME = "Câu hỏi cho:" + objTemp.NAME; objQuestion.MARK = objTemp.MARK; //Tự động sinh ra câu tra lời objAnser = new ANSWER_OBJ(); objAnser.CODE = busAnswer.genNextCode(objAnser); objAnser.QUESTIONCODE = objQuestion.CODE; objAnser.QUESTIONGROUPCODE = objTemp.CODE; objAnser.CODEVIEW = "1"; objAnser.THEORDER = 1; objAnser.NAME = objTemp.NAME; objAnser.CONTENT = ""; objAnser.TRUEANSWER = 1; break; //trường hợp câu hỏi tổng hợp cần sinh ra 3 câu trả lời là true/false/not given, nếu muốn biết được câu trả lời nào là đúng thì cần case "MS": //Tự động sinh ra câu hỏi objQuestion = new QUESTION_OBJ { QUESTIONGROUPCODE = objTemp.CODE }; objQuestion.CODE = busQuestion.genNextCode(objQuestion); objQuestion.NAME = "Câu hỏi cho:" + objTemp.NAME; objQuestion.MARK = objTemp.MARK; break; } } List <QUESTIONGROUPUSE_OBJ> liQuestiongroupuse = new List <QUESTIONGROUPUSE_OBJ>(); QUESTIONGROUPUSE_BUS busQuestiongroupuse = new QUESTIONGROUPUSE_BUS(); string[] listUse = obj.QUESTIONUSECODELIST.Split(','); foreach (var item in listUse) { QUESTIONGROUPUSE_OBJ objQuestiongroupuse = new QUESTIONGROUPUSE_OBJ { LOCK = 0, LOCKDATE = DateTime.Now, QUESITONGROUPCODE = objTemp.CODE, QUESTIONUSECODE = item }; liQuestiongroupuse.Add(objQuestiongroupuse); } bus.BeginTransaction(); busQuestiongroupuse.setConnection(bus); busAnswer.setConnection(bus); busQuestion.setConnection(bus); if (add == 1) { ret = bus.insert(objTemp); } else { //gán _ID để xác định bản ghi sẽ được cập nhật objTemp._ID.CODE = obj.CODE; ret = bus.update(objTemp); } if (ret >= 0) { // ReSharper disable once PossiblyMistakenUseOfParamsMethod ret = busQuestiongroupuse.Delete(new fieldpara("QUESITONGROUPCODE", objTemp.CODE)); } if (ret >= 0) { ret = busQuestiongroupuse.InsertMultiItems(liQuestiongroupuse); } //Cập nhật câu hỏi nếu nó được sinh tự động if (objQuestion != null && ret >= 0) { ret = busQuestion.Insert(objQuestion); } //Cập nhật answer nếu được sinh tự động if (objAnser != null && ret >= 0) { ret = busAnswer.Insert(objAnser); } if (ret >= 0) { _ses.tSOURCEPATHSESSION?.Clear(); _ses.tDESTINATIONPATHSESSION?.Clear(); bus.CommitTransaction(); } else { bus.RollbackTransaction(); } int pagecount = 0; int currentpage = 0; string questiongroup = JsonConvert.SerializeObject(objTemp); bus.CloseConnection(); //some thing like that return(Json(new { add, ret, questiongroup, pagecount, currentpage, obj = objTemp }, JsonRequestBehavior.AllowGet)); }