Beispiel #1
0
        /// <summary>
        ///
        /// lấy danh sách đợt thi của sinh viên
        /// </summary>
        /// <param name="markcode"></param>
        /// <param name="coursecode">mã lớp học</param>
        /// <returns></returns>
        public JsonResult GetByMarkCourse(string markcode, string coursecode)
        {
            EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS();
            var data = bus.getAllBy2(new fieldpara("MARKCODE", markcode, 0),
                                     new fieldpara("COURSECODE", coursecode, 0),
                                     new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0));
            string examtimecode = "";

            return(Json(new { data, examtimecode }, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// lấy danh sách sinh viên của lớp môn học, chưa được thêm vào đợt thi
        /// </summary>
        /// <param name="examtimeCode">mã đợt thi</param>
        /// <param name="courseCode">mã lớp môn học</param>
        /// <returns></returns>
        public JsonResult GetAllStudent(string examtimeCode, string courseCode)
        {
            var ret = 0;
            MARK_BUS markBus = new MARK_BUS();
            //lấy toàn bộ danh sách sinh viên trong một lớp môn học
            var liMark = markBus.getAllBy2(new fieldpara("COURSECODE", courseCode, 0),
                                           new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0));
            markBus.CloseConnection();
            EXAMHALLSTUDENT_BUS examBus = new EXAMHALLSTUDENT_BUS();
            var liExamHallStudent = examBus.getAllBy2(new fieldpara("EXAMTIMECODE", examtimeCode, 0),
                new fieldpara("COURSECODE", courseCode, 0),
                new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0));
            if (liMark == null && liExamHallStudent == null)
                ret = -1;
            else
            {
                foreach (var examHallStudent in liExamHallStudent)
                {
                    for (int i = 0; i < liMark.Count; i++)
                    {
                        var mark = liMark[i];
                        if (mark.CODE == examHallStudent.MARKCODE && mark.COURSECODE == examHallStudent.COURSECODE)
                        {
                            liMark.Remove(mark);
                            break;
                        }
                    }
                }
            }

            List<STUDENT_OBJ> liStudent = new List<STUDENT_OBJ>();
            if (liMark != null && liMark.Count > 0)
            {
                foreach (var mark in liMark)
                {
                    liStudent.Add(mark._STUDENTCODE);
                }
            }
            
            return Json(new { data = liStudent, ret = ret }, JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// chia đề thi cho sinh viên
        /// </summary>
        /// <param name="examtimeCode"></param>
        public int DevideExam(string examtimeCode)
        {
            int ret = 0;

            if (!string.IsNullOrEmpty(examtimeCode))
            {
                //list examform by examtime
                EXAMFORM_BUS examformBus    = new EXAMFORM_BUS();
                var          liExamform     = examformBus.getAllBy2("CODE", new fieldpara("EXAMTIMECODE", examtimeCode, 0));
                int          examformAmount = liExamform.Count; // số đề thi
                                                                // list hall
                EXAMHALL_BUS examhallBus = new EXAMHALL_BUS();
                var          liExamHall  = examhallBus.getAllBy2("CODE", new fieldpara("EXAMTIMECODE", examtimeCode, 0));
                foreach (var examhall in liExamHall)
                {
                    // danh sách sinh viên của một phòng thi
                    EXAMHALLSTUDENT_BUS examhallstudentBus = new EXAMHALLSTUDENT_BUS();
                    var liExamStd = examhallstudentBus.getAllBy2("CODE", new fieldpara("EXAMHALLCODE", examhall.CODE, 0));

                    for (int j = 0; j < liExamform.Count; j++)
                    {
                        for (int i = 0; i < liExamStd.Count; i++)
                        {
                            if (i % examformAmount == j)
                            {
                                liExamStd[i].EXAMFORMCODE = liExamform[j].CODE;
                                ret = examhallstudentBus.Update(liExamStd[i]);
                                if (ret < 0)
                                {
                                    return(ret);
                                }
                            }
                        }
                    }
                }
            }
            //  return ret;
            return(ret);
        }
Beispiel #4
0
        /// <summary>
        /// lấy danh sách kết quả thi trong 1 course của 1 sinh viên
        /// </summary>
        /// <param name="markcode"></param>
        /// <param name="coursecode">mã lớp môn học</param>
        /// <returns></returns>
        public JsonResult GetResult(string markcode, string coursecode)
        {
            //
            List <Exam> liExam = new List <Exam>();
            // lấy danh sách các lần thi của sinh viên trong 1 lớp học
            EXAMHALLSTUDENT_BUS bus  = new EXAMHALLSTUDENT_BUS();
            List <fieldpara>    lipa = new List <fieldpara>
            {
                new fieldpara("MARKCODE", markcode, 0),
                new fieldpara("COURSECODE", coursecode, 0),
                new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0)
            };
            var liExamHallStudent = bus.getAllBy2("CODE", lipa.ToArray());

            // lấy điểm cụ thể của từng đợt thi
            if (liExamHallStudent != null)
            {
                EXAMRESULT_BUS examresultBus = new EXAMRESULT_BUS();

                foreach (var item in liExamHallStudent)
                {
                    Exam exam = new Exam
                    {
                        ExamHallStudentCode = item.CODE
                    };
                    // lấy tên đợt thi
                    string examTimeName = item._EXAMTIMECODE.NAME;
                    exam.Name = examTimeName;
                    // danh sách các câu hỏi và điểm trong bài thi
                    List <Question> liQuestion   = new List <Question>();
                    var             liExamReSult = examresultBus.getAllBy2("QUESTIONCODE",
                                                                           new fieldpara("EXAMHALLSTUDENTCODE", item.CODE, 0));

                    for (int i = 0; i < liExamReSult.Count - 1; i++)
                    {
                        double totalMark         = 0;
                        var    questiongroupcode = liExamReSult[i].QUESTIONGROUPCODE;
                        string questionName      = liExamReSult[i]._QUESTIONGROUPCODE.NAME;
                        if (!string.IsNullOrEmpty(questiongroupcode))
                        {
                            totalMark += liExamReSult[i].MARK;
                            liExamReSult[i].QUESTIONGROUPCODE = "";

                            for (int j = i + 1; j < liExamReSult.Count; j++)
                            {
                                if (liExamReSult[j].QUESTIONGROUPCODE == questiongroupcode)
                                {
                                    totalMark += liExamReSult[j].MARK;
                                    liExamReSult[j].QUESTIONGROUPCODE = "";
                                }
                            }
                        }
                        if (!string.IsNullOrEmpty(questiongroupcode))
                        {
                            Question question = new Question
                            {
                                QuestionGroupCode = questiongroupcode,
                                Mark = totalMark,
                                Name = questionName
                            };
                            liQuestion.Add(question);
                        }
                    }
                    exam.ListQuestion = liQuestion;
                    liExam.Add(exam);
                    examresultBus.CloseConnection();
                }
            }

            bus.CloseConnection();
            return(Json(new { data = liExam }, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// khi update bản ghi: hàm này được gọi trong hàm update
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public ArrayList UpdateExamHall(EXAMHALL_OBJ obj)
        {
            ArrayList    arrList = new ArrayList();
            EXAMHALL_BUS bus     = new EXAMHALL_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 EXAMHALL_OBJ.BusinessObjectID(obj.CODE)) : new EXAMHALL_OBJ();

            if (ret < 0)
            {
                //đóng kết nối trước khi trả về
                bus.CloseConnection();
                //ban ghi sửa đã bị xóa
                return(arrList);
            }
            //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.NOTE     = obj.NOTE;
            objTemp.LOCK     = obj.LOCK;
            //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.CODEVIEW = objTemp.CODE;
                objTemp.LOCKDATE = DateTime.Now;
            }
            objTemp.EXAMTIMECODE      = obj.EXAMTIMECODE;
            objTemp.BAGGROUP          = obj.BAGGROUP;
            objTemp.HALLNUMBER        = obj.HALLNUMBER;
            objTemp.MAXSTUDENT        = obj.MAXSTUDENT;
            objTemp.STUDENTAMOUNT     = obj.STUDENTAMOUNT;
            objTemp.EXAMSTUDENTAMOUNT = obj.EXAMSTUDENTAMOUNT;
            objTemp.PAPERAMOUNT       = obj.PAPERAMOUNT;
            objTemp.BEGINTIME         = obj.BEGINTIME;
            objTemp.ENDTIME           = obj.ENDTIME;
            objTemp.UNIVERSITYCODE    = _ses.gUNIVERSITYCODE;
            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)
                {
                    // update lại realbegintime và realendtime cho các sinh viên trong phòng này
                    EXAMHALLSTUDENT_BUS stdBus = new EXAMHALLSTUDENT_BUS();
                    var examHallStd            = stdBus.getAllBy2("CODE", new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0),
                                                                  new fieldpara("EXAMHALLCODE", objTemp.CODE, 0));
                    if (examHallStd != null)
                    {
                        foreach (var item in examHallStd)
                        {
                            item.REALBEGINTIME = objTemp.BEGINTIME;
                            item.REALENDTIME   = objTemp.ENDTIME;
                            item.FINALENDTIME  = objTemp.ENDTIME;

                            ret = new ExamHallStudentController().Update(item);
                        }
                    }
                    stdBus.CloseConnection();
                }
            }
            int pagecount   = 0;
            int currentpage = 0;

            if (ret >= 0)
            {
                List <fieldpara> lipa = new List <fieldpara> {
                    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();
            arrList.Add(objTemp.CODE);
            arrList.Add(ret);
            arrList.Add(pagecount);
            arrList.Add(currentpage);
            return(arrList);
        }
 /// <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;
 }