/// <summary>
        /// Lấy  Mã hiển thi, và số đếm lớn nhất của questiontype
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public JsonResult GetMaxCount(string code)
        {
            QUESTIONTYPE_BUS bus = new QUESTIONTYPE_BUS();
            int count;
            QUESTIONTYPE_OBJ obj = bus.getMaxCount(code, out count);

            bus.CloseConnection();
            var ret = 0;

            if (obj == null)
            {
                ret = -1;
            }
            return(Json(new { ret = ret, obj = obj, count = count }, 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));
        }
        public JsonResult Update(QUESTIONTYPE_OBJ obj)
        {
            QUESTIONTYPE_BUS bus = new QUESTIONTYPE_BUS();
            //kiểm tra tồn tại cho trường hợp sửa
            QUESTIONTYPE_OBJ objTemp;
            int ret = 0;
            int add = 0;

            objTemp = !string.IsNullOrEmpty(obj.CODE) ? bus.GetByID(new QUESTIONTYPE_OBJ.BusinessObjectID(obj.CODE)) : new QUESTIONTYPE_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 { 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.LOCK           = obj.LOCK;
            objTemp.NOTE           = obj.NOTE;
            objTemp.LANGUAGECODE   = _ses.getLang();
            objTemp.THEORDER       = obj.THEORDER;
            objTemp.UNIVERSITYCODE = _ses.gUNIVERSITYCODE;

            //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;
            }
            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)
            {
                bus.RollbackTransaction();
            }
            else
            {
                bus.CommitTransaction();
            }
            bus.CloseConnection();
            return(Json(new
            {
                ret,
                obj = objTemp
            }, JsonRequestBehavior.AllowGet));
        }