Ejemplo n.º 1
0
        /// <summary>
        /// sinh chi tiết đề thi
        /// </summary>
        /// <param name="examformCode">mã đề thi</param>
        /// <param name="testStructCode"></param>
        /// <returns></returns>
        public int CreateExamFormDetail(ref List <EXAMFORMDETAIL_OBJ> liExamformdetail, EXAMFORM_OBJ objExamform, List <TESTSTRUCTDETAIL_OBJ> liTestStructDetail, ref string currentCode)
        {
            int    ret = 0;
            Random rnd = new Random();

            EXAMFORMDETAIL_BUS bus = new EXAMFORMDETAIL_BUS();
            EXAMFORMDETAIL_OBJ obj = new EXAMFORMDETAIL_OBJ();

            //            List<EXAMFORMDETAIL_OBJ> liExamformdetail = new List<EXAMFORMDETAIL_OBJ>();
            //Chuẩn bị các mã
            //string currentCode = bus.genNextCode(obj);

            foreach (var testStructDetail in liTestStructDetail)
            {
                int amountQues = testStructDetail.AMOUNT; // số câu hỏi
                                                          // double toTalMark = testStructDetail.TOTALMARK; // tổng số điểm
                if (amountQues > 0)                       // nếu có câu hỏi trong cấu trúc đề thi
                {
                    string subjectContentCode = testStructDetail.SUBJECTCONTENTCODE;
                    string questionTypeCode   = testStructDetail.QUESTIONTYPECODE;
                    int    countQues          = 0;                                        //tổng số câu hỏi đã lấy được
                                                                                          //   double countMark = 0; // tổng số điểm lấy được
                                                                                          // get ListQuestionGroup by subjectContentCode and questiontypecode
                    List <QUESTIONGROUP_OBJ> liQuesGroup           = new QuestionController().GetQGroupBySbjContent(subjectContentCode, questionTypeCode);
                    List <string>            selectedQuesGroupCode = new List <string>(); // danh sách nhóm câu hỏi đã được chọn
                    //Random ra câu hỏi,
                    //random được câu nào thì remove câu đó khỏi danh sách ban đầu (ko bị random lại)
                    while (liQuesGroup.Count > 0 && countQues < amountQues)
                    {
                        int r = rnd.Next(0, liQuesGroup.Count);
                        QUESTIONGROUP_OBJ questionGroup = liQuesGroup[r];
                        selectedQuesGroupCode.Add(questionGroup.CODE);
                        liQuesGroup.RemoveAt(r);
                        countQues++;
                    }
                    // insert examformdetail

                    //ret = InsertExamFormDetail(objExamform.CODE, selectedQuesGroupCode, testStructDetail.CODE);
                    //Tính toán các bước để xác định các được sinh ra

                    for (int i = 0; i < selectedQuesGroupCode.Count; i++)
                    {
                        obj = new EXAMFORMDETAIL_OBJ();
                        obj.EXAMFORMCODE         = objExamform.CODE;
                        obj.QUESTIONGROUPCODE    = selectedQuesGroupCode[i];
                        obj.TESTSTRUCTDETAILCODE = testStructDetail.CODE;
                        obj.THEORDER             = i + 1;
                        obj.CODE = currentCode;
                        //Tính toán mã mới
                        currentCode = bus.genNextCode(obj, currentCode);
                        //Thêm vào danh sách chuẩn bị vào
                        liExamformdetail.Add(obj);
                    }
                }
            }
            //Insert here
            //ret = bus.InsertMultiItems(liExamformdetail);
            //bus.CloseConnection();
            return(ret);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// sinh chi tiết đề thi
        /// </summary>
        /// <param name="examformCode">mã đề thi</param>
        /// <param name="testStructCode">mã cấu trúc đề thi</param>
        /// <returns></returns>
        public int CreateExamFormDetail(string examformCode, string testStructCode)
        {
            int    ret = 0;
            Random rnd = new Random();
            // get list TestStructDetail by testStructCode
            var liTestStructDetail = new TestStructDetailController().getDetailByTestStruct(testStructCode);

            if (liTestStructDetail != null)
            {
                foreach (var testStructDetail in liTestStructDetail)
                {
                    int amountQues = testStructDetail.AMOUNT;                            // số câu hỏi
                                                                                         // double toTalMark = testStructDetail.TOTALMARK; // tổng số điểm
                    if (amountQues > 0)                                                  // nếu có câu hỏi trong cấu trúc đề thi
                    {
                        string subjectContentCode = testStructDetail.SUBJECTCONTENTCODE; // thuộc bài học nào
                        string questionTypeCode   = testStructDetail.QUESTIONTYPECODE;
                        int    countQues          = 0;                                   //tổng số câu hỏi đã lấy được
                                                                                         // lấy ra các câu hỏi thuộc nội dung bài học và có loại câu hỏi theo cấu trúc đề quy định
                        List <QUESTIONGROUP_OBJ> liQuesGroup = new QuestionController().GetQGroupBySbjContent(subjectContentCode, questionTypeCode);
                        if (liQuesGroup != null && liQuesGroup.Count >= amountQues)
                        {
                            List <string> selectedQuesGroupCode = new List <string>(); // danh sách nhóm câu hỏi đã được chọn
                                                                                       //Random ra câu hỏi,
                                                                                       //random được câu nào thì remove câu đó khỏi danh sách ban đầu (ko bị random lại)
                            while (liQuesGroup.Count > 0 && countQues < amountQues)
                            {
                                int r = rnd.Next(0, liQuesGroup.Count);
                                QUESTIONGROUP_OBJ questionGroup = liQuesGroup[r];
                                selectedQuesGroupCode.Add(questionGroup.CODE);
                                liQuesGroup.RemoveAt(r);
                                countQues++;
                            }
                            // insert examformdetail
                            // chuẩn bị dữ liệu để insert
                            EXAMFORMDETAIL_BUS        bus = new EXAMFORMDETAIL_BUS();
                            List <EXAMFORMDETAIL_OBJ> liExamformdetail = new List <EXAMFORMDETAIL_OBJ>();
                            EXAMFORMDETAIL_OBJ        obj = new EXAMFORMDETAIL_OBJ();
                            string currentCode            = bus.genNextCode(obj);
                            for (int i = 0; i < selectedQuesGroupCode.Count; i++)
                            {
                                obj = new EXAMFORMDETAIL_OBJ();
                                obj.EXAMFORMCODE         = examformCode;
                                obj.QUESTIONGROUPCODE    = selectedQuesGroupCode[i];
                                obj.TESTSTRUCTDETAILCODE = testStructDetail.CODE;
                                obj.THEORDER             = i + 1;
                                obj.CODE = currentCode;
                                //Tính toán mã mới
                                currentCode = bus.genNextCode(obj, currentCode);
                                //Thêm vào danh sách chuẩn bị vào
                                liExamformdetail.Add(obj);
                            }
                            // insert
                            ret = bus.InsertMultiItems(liExamformdetail);
                        }
                        else
                        {
                            ret = -2; // list câu hỏi không đủ để sinh đề
                            break;
                        }
                    }
                    else
                    {
                        ret = -3;  // không có totalmark trong cấu trúc đề
                    }
                }
            }

            return(ret);
        }