/// <summary>
        /// Tạo đề thi với đợt thi, với cấu trúc đề thi, số lượng đề thi theo quy định; Trả về danh sách đề thi
        /// Mr. Uyen viết
        /// </summary>
        /// <param name="examTimeCode"></param>
        /// <param name="testStructCode"></param>
        public List <EXAMFORM_OBJ> CreateExamForm(EXAMTIME_OBJ objExamtime, int testcount, out int ret)
        {
            List <EXAMFORM_OBJ> liExamform = new List <EXAMFORM_OBJ>();

            ret = 0;
            // get examtime
            EXAMFORM_BUS bus         = new EXAMFORM_BUS();
            EXAMFORM_OBJ obj         = new EXAMFORM_OBJ();
            string       currentCode = bus.genNextCode(obj);//Mã đầu tiên

            for (int i = 0; i < testcount; i++)
            {
                // create examform
                obj = new EXAMFORM_OBJ
                {
                    EXAMTIMECODE   = objExamtime.CODE,
                    SUBJECTCODE    = objExamtime.SUBJECTCODE,
                    TESTSTRUCTCODE = objExamtime.TESTSTRUCTCODE,
                    EDITTIME       = DateTime.Now,
                    EDITUSER       = _ses.loginCode,
                    LOCK           = 0,
                    NAME           = objExamtime.NAME + "(" + (i + 1).ToString() + ")"
                };
                obj.CODE     = currentCode;
                currentCode  = bus.genNextCode(obj, currentCode);
                obj.CODEVIEW = (i + 1).ToString();
                obj.LOCKDATE = DateTime.Now;
                liExamform.Add(obj);
            }
            //            ret = bus.InsertMultiItems(liExamform);
            bus.CloseConnection();
            return(liExamform);
        }
        /// <summary>
        /// tạo đề thi cho một đợt thi với cấu trúc đề thi cho trươcs.
        /// create by cucpt
        /// </summary>
        /// <param name="examTimeCode"></param>
        /// <param name="testStructCode"></param>
        public ArrayList CreateExamForm(string examTimeCode, string testStructCode)
        {
            ArrayList result = new ArrayList();
            string    code   = "";
            // xóa toàn bộ đề thi cũ
            var ret = DeleteAll(examTimeCode);

            if (ret >= 0)
            {
                // get examtime
                EXAMTIME_BUS examTimeBus = new EXAMTIME_BUS();
                EXAMTIME_OBJ examtime    = examTimeBus.GetByID(new EXAMTIME_OBJ.BusinessObjectID(examTimeCode));
                int          testcount   = examtime.TESTCOUNT; // số đề thi
                EXAMFORM_BUS bus         = new EXAMFORM_BUS();
                for (int i = 0; i < testcount; i++)
                {
                    // tạo 1 đề thi mới. với mỗi đề thi, sinh ra cấu trúc đề thi tương ứng
                    EXAMFORM_OBJ obj = new EXAMFORM_OBJ
                    {
                        EXAMTIMECODE   = examTimeCode,
                        SUBJECTCODE    = examtime.SUBJECTCODE,
                        TESTSTRUCTCODE = testStructCode,
                        EDITTIME       = DateTime.Now,
                        EDITUSER       = _ses.loginCode,
                        LOCK           = 0,
                        NAME           = "Đề " + (i + 1) + " " + examtime.NAME
                    };
                    obj.CODE     = bus.genNextCode(obj);
                    obj.CODEVIEW = obj.CODE;
                    code         = obj.CODE;
                    obj.LOCKDATE = DateTime.Now;
                    ret          = bus.insert(obj);
                    if (ret >= 0) // nếu tạo đề thành công thì đi tạo chi tiết đề
                    {
                        ret = CreateExamFormDetail(obj.CODE, testStructCode);
                    }
                    if (ret < 0)
                    {
                        break; // nếu tạo đề không thành công thì thoát luôn, báo lỗi cho người dùng
                    }
                }
            }
            // sau khi tạo đề thành công thì đi chia đề cho sinh viên
            if (ret >= 0)
            {
                // chia đề thi
                ret = DevideExam(examTimeCode);
            }
            result.Add(ret);
            result.Add(code);
            return(result);
        }
        public int ProcessExamFormAuto(string examtimecode, string coursecode, int testcount)
        {
            int ret = 0;
            //Lấy được đợt thi
            EXAMTIME_BUS        bus        = new EXAMTIME_BUS();
            EXAMTIME_OBJ        obj        = bus.GetByID(new EXAMTIME_OBJ.BusinessObjectID(examtimecode));
            EXAMFORM_BUS        busExamfom = new EXAMFORM_BUS();
            List <EXAMFORM_OBJ> liExamform = new List <EXAMFORM_OBJ>();

            bus.CloseConnection();
            if (obj == null)
            {
                ret = -1;
            }
            //Lấy được lớp học
            MARK_BUS        busMark = new MARK_BUS();
            List <MARK_OBJ> liMark  = busMark.getAllBy2(new fieldpara("COURSECODE", coursecode));

            busMark.CloseConnection();

            if (ret >= 0)
            {
                liExamform = CreateExamForm(obj, testcount, out ret);
            }
            EXAMFORMDETAIL_BUS        busExamformdetail = new EXAMFORMDETAIL_BUS();
            EXAMFORMDETAIL_OBJ        objExamformdetail = new EXAMFORMDETAIL_OBJ();
            List <EXAMFORMDETAIL_OBJ> liExamformdetail  = new List <EXAMFORMDETAIL_OBJ>();
            //Danh sách cấu trúc đề
            TESTSTRUCTDETAIL_BUS        busTeststructdetail = new TESTSTRUCTDETAIL_BUS();
            List <TESTSTRUCTDETAIL_OBJ> liTestStructDetail  = busTeststructdetail.getByTestStruct(obj.TESTSTRUCTCODE, _ses.gUNIVERSITYCODE);

            busTeststructdetail.CloseConnection();

            string currentCode = busExamformdetail.genNextCode(objExamformdetail);

            if (ret >= 0)
            {
                foreach (EXAMFORM_OBJ objtem in liExamform)
                {
                    ret = CreateExamFormDetail(ref liExamformdetail, objtem, liTestStructDetail, ref currentCode);
                    if (ret < 0)
                    {
                        break;
                    }
                }
            }
            //Gán sinh viên vào danh sách đề
            List <EXAMHALLSTUDENT_OBJ> liExamhallstudent  = new List <EXAMHALLSTUDENT_OBJ>();
            EXAMHALLSTUDENT_BUS        busExamhallstudent = new EXAMHALLSTUDENT_BUS();
            EXAMHALLSTUDENT_OBJ        objExamhallstudent = new EXAMHALLSTUDENT_OBJ();

            currentCode = busExamhallstudent.genNextCode(objExamhallstudent);
            int i = 0;

            //Thêm tất cả sinh viên
            foreach (MARK_OBJ objMar in liMark)
            {
                //Gán sinh viên vào examhall student
                objExamhallstudent              = new EXAMHALLSTUDENT_OBJ();
                objExamhallstudent.CODE         = currentCode;
                currentCode                     = busExamhallstudent.genNextCode(objExamhallstudent, currentCode);
                objExamhallstudent.COURSECODE   = coursecode;
                objExamhallstudent.EDITTIME     = DateTime.Now;
                objExamhallstudent.EDITUSER     = _ses.loginCode;
                objExamhallstudent.EXAMFORMCODE = liExamform[i % testcount].CODE;
                objExamhallstudent.EXAMTIMECODE = examtimecode;
                i++;
                objExamhallstudent.EXAMHALLCODE   = "";
                objExamhallstudent.MARKCODE       = objMar.CODE;
                objExamhallstudent.UNIVERSITYCODE = _ses.gUNIVERSITYCODE;
                liExamhallstudent.Add(objExamhallstudent);
            }
            if (ret >= 0)
            {
                busExamfom.BeginTransaction();
                busExamformdetail.setConnection(busExamfom);
                busExamhallstudent.setConnection(busExamfom);
                ret = busExamfom.InsertMultiItems(liExamform);
                if (ret >= 0)
                {
                    ret = busExamformdetail.InsertMultiItems(liExamformdetail);
                }
                if (ret >= 0)
                {
                    ret = busExamhallstudent.InsertMultiItems(liExamhallstudent);
                }
                if (ret >= 0)
                {
                    busExamfom.CommitTransaction();
                }
                else
                {
                    busExamfom.RollbackTransaction();
                }
            }
            busExamfom.CloseConnection();
            return(ret);
        }
Example #4
0
        /// <summary>
        /// Cập nhật một bản ghi được gửi lên từ phía client
        /// </summary>
        public JsonResult Update(EXAMTIME_OBJ obj, string parentcode = "DH")
        {
            EXAMTIME_BUS bus = new EXAMTIME_BUS();
            int          ret;
            int          add = 0;
            EXAMTIME_OBJ objTemp;

            //kiểm tra tồn tại cho trường hợp sửa
            if (!string.IsNullOrEmpty(obj.CODE))//edit
            {
                objTemp = bus.GetByID(new EXAMTIME_OBJ.BusinessObjectID(obj.CODE));
                if (objTemp == null || objTemp.UNIVERSITYCODE != _ses.gUNIVERSITYCODE)
                {
                    ret = -4;
                    //đó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));
                }
            }
            else
            {
                objTemp = new EXAMTIME_OBJ();
            }

            //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.EDUCATIONLEVELCODE = "DH";
            //obj_temp.EDUCATIONLEVELCODE = obj.EDUCATIONLEVELCODE;
            objTemp.SUBJECTCODE       = obj.SUBJECTCODE;
            objTemp.UNIVERSITYCODE    = _ses.gUNIVERSITYCODE;
            objTemp.NOTE              = obj.NOTE;
            objTemp.LOCK              = obj.LOCK;
            objTemp.YEAR              = obj.YEAR;
            objTemp.TERM              = obj.TERM;
            objTemp.MAXSTUDENTPERTEST = obj.MAXSTUDENTPERTEST;
            objTemp.QUESTIONUSE       = obj.QUESTIONUSE;
            objTemp.STUDENTAMOUNTHALL = obj.STUDENTAMOUNTHALL;
            objTemp.STUDENTINBAG      = obj.STUDENTINBAG;
            objTemp.TESTSTRUCTCODE    = obj.TESTSTRUCTCODE;
            objTemp.TESTCOUNT         = obj.TESTCOUNT;
            objTemp.WHOIS             = bus.encrypt(objTemp);
            //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);
            }
            int pagecount   = 0;
            int currentpage = 0;

            if (ret >= 0)
            {
                List <fieldpara> lipa = new List <fieldpara>();
                //Lọc đơn vị cấp trên; '' sẽ là không co đơn vị cấp trên
                if (!string.IsNullOrEmpty(parentcode))
                {
                    lipa.Add(new fieldpara("EDUCATIONLEVELCODE", parentcode, 0));
                }
                lipa.Add(new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0));
                objTemp._ID.CODE = objTemp.CODE;
                ret = bus.checkPage(objTemp._ID, "CODE", AppConfig.item4page(), out pagecount, out currentpage, lipa);
            }
            bus.CloseConnection();
            //some thing like that
            return(Json(new { ret, pagecount, currentpage }, JsonRequestBehavior.AllowGet));
        }
 /// <summary>
 /// tạo phòng thi cho sinh viên
 /// </summary>
 /// <param name="examTimeCode">mã đợt thi</param>
 /// <returns></returns>
 public int CreateExamHallStudent(string examTimeCode)
 {
     var ret = 0;
     // delete all examhall by examtimecode
     ExamHallController examhallstudens = new ExamHallController();
     ret = examhallstudens.DeleteAll(examTimeCode);
     if (ret >= 0)
     {
         // get examtime
         EXAMTIME_BUS examTimeBus = new EXAMTIME_BUS();
         EXAMTIME_OBJ examtime = examTimeBus.GetByID(new EXAMTIME_OBJ.BusinessObjectID(examTimeCode));
         int studentAmountHall = examtime.STUDENTAMOUNTHALL;
         //get all student by examtime
         EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS();
         List<fieldpara> lipa = new List<fieldpara>
     {
         new fieldpara("EXAMTIMECODE", examTimeCode, 0),
         new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0)
     };
         //order by code
         var liStudent = bus.getAllBy2("CODE", lipa.ToArray()); // list ExamHallStudent
         EXAMHALLSTUDENT_OBJ examhallstudent = new EXAMHALLSTUDENT_OBJ();
         string examhallcode = "";
         int counthall = 0; // số phòng
         // gán mã phòng cho sinh viên
         for (int i = 0; i < liStudent.Count; i++)
         {
             // ví dụ: từ sinh viên 1 -> count - 1
             if (i % studentAmountHall != 0)
             {
                 examhallstudent.CODE = liStudent[i].CODE;
                 examhallstudent.EXAMHALLCODE = examhallcode;
                 ret = Update(examhallstudent);
                 if (ret < 0)
                 {
                     bus.CloseConnection();
                     examTimeBus.CloseConnection();
                     return ret;
                 }
             }
             else
             {
                 counthall++;
                 // các sinh viên đầu phòng
                 // create examhall
                 EXAMHALL_OBJ examhall = new EXAMHALL_OBJ
                 {
                     NAME = examtime.NAME + " - "+ counthall,
                     EXAMTIMECODE = examTimeCode,
                     UNIVERSITYCODE = _ses.gUNIVERSITYCODE
                 };
                 ArrayList result = new ExamHallController().UpdateExamHall(examhall);
                 examhallcode = (string)result[0]; // examhallcode
                                                   // update examhallcode
                 examhallstudent.CODE = liStudent[i].CODE;
                 examhallstudent.EXAMHALLCODE = examhallcode;
                 ret = Update(examhallstudent);
                 if (ret < 0)
                 {
                     bus.CloseConnection();
                     examTimeBus.CloseConnection();
                     return ret;
                 }
             }
         }
         bus.CloseConnection();
         examTimeBus.CloseConnection();
     }
    
     return ret;
 }