public JsonResult UpdateQuestion(QUESTION_OBJ obj, string typeQuestion)
        {
            int ret = 0;

            int          add = 0;
            QUESTION_OBJ objTemp;
            string       codeAnswer = "";
            QUESTION_BUS bus        = new QUESTION_BUS();
            ANSWER_BUS   ansbus     = new ANSWER_BUS();

            if (!string.IsNullOrEmpty(obj.CODE)) //edit
            {
                objTemp = bus.GetByID(new QUESTION_OBJ.BusinessObjectID(obj.CODE));
                if (typeQuestion == "CO")
                {
                    List <ANSWER_OBJ> libegin = ansbus.getAllBy2(" CODE ", new fieldpara("QUESTIONCODE", obj.CODE, 0)
                                                                 , new fieldpara("QUESTIONGROUPCODE", obj.QUESTIONGROUPCODE, 0));
                    if (obj.ANSWERCODE != null)
                    {
                        foreach (ANSWER_OBJ item in libegin)
                        {
                            if (item.CODEVIEW.Split('_')[1] == obj.ANSWERCODE)
                            {
                                codeAnswer      = item.CODE;
                                item.TRUEANSWER = 1;
                                item._ID.CODE   = item.CODE;
                                ret             = ansbus.update(item);
                            }
                            else
                            {
                                item.TRUEANSWER = 0;
                                item._ID.CODE   = item.CODE;
                                ret             = ansbus.update(item);
                            }
                        }
                    }
                }
            }
            else //add
            {
                objTemp = new QUESTION_OBJ();
            }
            if (ret < 0)
            {
                //đóng kết nối trước khi trả về
                bus.CloseConnection();
                //ban ghi sửa đã bị xóa
                return(Json(new { ret }, JsonRequestBehavior.AllowGet));
            }
            //hết kiểm tra tồn tại bản ghi
            objTemp.CODEVIEW          = obj.CODEVIEW;
            objTemp.NAME              = obj.NAME;
            objTemp.CONTENTIMG        = obj.CONTENTIMG;
            objTemp.MARK              = obj.MARK;
            objTemp.ORD               = obj.ORD;
            objTemp.LOCK              = obj.LOCK;
            objTemp.CONTENT           = obj.CONTENT;
            objTemp.QUESTIONGROUPCODE = obj.QUESTIONGROUPCODE;
            //trong trường hợp là câu hỏi dạng CO thì cập nhật lại answercode bằng codeanswer không thì sẽ làm như bình thường objTemp.Answercode= obj.Answercode
            objTemp.ANSWERCODE = typeQuestion == "CO" ? codeAnswer : obj.ANSWERCODE;

            //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);
                if (typeQuestion == "CO")
                {
                    ANSWER_OBJ        objAnser          = new ANSWER_OBJ();
                    ANSWER_BUS        busAnswer         = new ANSWER_BUS();
                    string            answerCode        = busAnswer.genNextCode(objAnser);
                    List <ANSWER_OBJ> listAnswer        = new List <ANSWER_OBJ>();
                    List <string>     listContentAnswer = new List <string> {
                        "TRUE", "FALSE", "NOT GIVEN"
                    };
                    //Tự động sinh ra câu hỏi và là 3 đáp án true, false,
                    //Tự động sinh ra câu tra lời
                    for (int i = 0; i < listContentAnswer.Count; i++)
                    {
                        ANSWER_OBJ answer = new ANSWER_OBJ
                        {
                            CODE = answerCode
                        };
                        answerCode               = busAnswer.GenNextCode(answer, answerCode);
                        answer.QUESTIONCODE      = objTemp.CODE;
                        answer.QUESTIONGROUPCODE = obj.QUESTIONGROUPCODE;
                        answer.CODEVIEW          = "CO_" + i;
                        answer.THEORDER          = i + 1;
                        answer.NAME              = "CO" + (i + 1);
                        answer.CONTENT           = listContentAnswer[i];
                        if (int.Parse(obj.ANSWERCODE) == i)
                        {
                            objTemp.ANSWERCODE = answerCode;
                            answer.TRUEANSWER  = 1;
                        }
                        else
                        {
                            answer.TRUEANSWER = 0;
                        }

                        listAnswer.Add(answer);
                    }
                    busAnswer.BeginTransaction();
                    ret = busAnswer.InsertMultiItems(listAnswer);
                    if (ret < 0)
                    {
                        busAnswer.RollbackTransaction();
                    }
                    else
                    {
                        busAnswer.CommitTransaction();
                    }
                    busAnswer.CloseConnection();
                }
            }
            if (add == 1 && ret >= 0)
            {
                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);
            }
            bus.CloseConnection();
            ansbus.CloseConnection();

            return(Json(new
            {
                ret
            },
                        JsonRequestBehavior.AllowGet));
        }
        public JsonResult UpdateQuestionF(QUESTION_OBJ obj, string questiontypeCodeView, string contentAnswer)
        {
            QUESTION_BUS bus = new QUESTION_BUS();
            int          ret;
            int          add       = 0;
            ANSWER_BUS   busAnswer = new ANSWER_BUS();
            ANSWER_OBJ   objAnswer = new ANSWER_OBJ();
            //kiểm tra tồn tại cho trường hợp sửa
            var objTemp = !string.IsNullOrEmpty(obj.CODE) ? bus.GetByID(new QUESTION_OBJ.BusinessObjectID(obj.CODE)) : new QUESTION_OBJ();

            //hết kiểm tra tồn tại bản ghi
            objTemp.CODEVIEW          = obj.CODEVIEW;
            objTemp.NAME              = obj.NAME;
            objTemp.CONTENTIMG        = obj.CONTENTIMG;
            objTemp.MARK              = obj.MARK;
            objTemp.ORD               = obj.ORD;
            objTemp.LOCK              = obj.LOCK;
            objTemp.CONTENT           = obj.CONTENT;
            objTemp.QUESTIONGROUPCODE = obj.QUESTIONGROUPCODE;
            objTemp.ANSWERCODE        = obj.ANSWERCODE;
            //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);
                objAnswer.CODE     = busAnswer.genNextCode(objAnswer);
                objTemp.ANSWERCODE = objAnswer.CODE;
            }
            if (add == 1)
            {
                ret = bus.insert(objTemp);
                //chỉ cần thêm mới chứ không cần cập nhật answer
                if (ret >= 0)
                {
                    objAnswer.QUESTIONCODE      = objTemp.CODE;
                    objAnswer.QUESTIONGROUPCODE = obj.QUESTIONGROUPCODE;
                    objAnswer.CODEVIEW          = "1";
                    objAnswer.THEORDER          = 1;
                    objAnswer.NAME       = objTemp.NAME;
                    objAnswer.CONTENT    = contentAnswer;
                    objAnswer.TRUEANSWER = 1;
                    ret = busAnswer.insert(objAnswer);
                }
            }
            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);
            }

            bus.CloseConnection();
            busAnswer.CloseConnection();
            return(Json(new
            {
                code = objTemp.CODE,
                ret
            },
                        JsonRequestBehavior.AllowGet));
        }
        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));
        }