/// <summary> /// update bản ghi /// </summary> /// <param name="obj"></param> /// <returns></returns> public int Update(EXAMHALLSTUDENT_OBJ obj) { int ret = 0; EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS(); var objTemp = bus.GetByID(new EXAMHALLSTUDENT_OBJ.BusinessObjectID(obj.CODE)); if (objTemp == null) { ret = -1; } else { // objTemp.EXAMFORMCODE = obj.EXAMFORMCODE; if (!string.IsNullOrWhiteSpace(obj.EXAMHALLCODE)) objTemp.EXAMHALLCODE = obj.EXAMHALLCODE; objTemp.LOCK = obj.LOCK; // = 0: thi bình thường, = 1: hủy kết quả thi objTemp.REALBEGINTIME = obj.REALBEGINTIME; objTemp.REALENDTIME = obj.REALENDTIME; objTemp.FINALENDTIME = obj.FINALENDTIME; objTemp.FINISHTIME = obj.FINISHTIME; objTemp.REPORTTIME = obj.REPORTTIME; objTemp.EDITTIME = DateTime.Now; obj.EDITUSER = _ses.loginCode; ret = bus.update(objTemp); } bus.CloseConnection(); return ret; }
/// <summary> /// thêm dữ liệu vào bảng examhallstudent : /// </summary> /// <param name="listStudentCode"></param> /// <param name="examTimeCode"></param> /// <param name="courseCode"></param> /// <param name="parentCode"></param> /// <returns></returns> public JsonResult Insert(List<string> listStudentCode, string examTimeCode, string courseCode) { int ret = 0; if (listStudentCode != null) { EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS(); foreach (var studentCode in listStudentCode) { MARK_BUS markBus = new MARK_BUS(); MARK_OBJ markObj = markBus.GetByKey( new fieldpara("STUDENTCODE", studentCode, 0), new fieldpara("COURSECODE", courseCode, 0), new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0) ); if (markObj == null) ret = -1; else { // kiểm tra đã tồn tại bản ghi có markcode và coursecode truyền vào chưa EXAMHALLSTUDENT_OBJ obj = bus.GetByKey( new fieldpara("MARKCODE", markObj.CODE, 0), new fieldpara("COURSECODE", courseCode, 0), new fieldpara("EXAMTIMECODE", examTimeCode, 0), new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0) ); if (obj != null) { ret = -2; return Json(new { ret }, JsonRequestBehavior.AllowGet); } EXAMHALLSTUDENT_OBJ objTemp = new EXAMHALLSTUDENT_OBJ(); objTemp.CODE = bus.genNextCode(objTemp); objTemp.MARKCODE = markObj.CODE; objTemp.COURSECODE = courseCode; objTemp.EXAMTIMECODE = examTimeCode; objTemp.LOCK = 0; objTemp.EDITTIME = DateTime.Now; objTemp.EDITUSER = _ses.loginCode; objTemp.UNIVERSITYCODE = _ses.gUNIVERSITYCODE; ret = bus.insert(objTemp); } markBus.CloseConnection(); } bus.CloseConnection(); } return Json(new { ret }, JsonRequestBehavior.AllowGet); }
/// <summary> /// xóa danh sách sinh viên trong đợt thi /// </summary> /// <param name="listCode"></param> /// <returns></returns> public JsonResult Delete(List<string> listCode) { var ret = 0; EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS(); List<EXAMHALLSTUDENT_OBJ.BusinessObjectID> deletedata = new List<EXAMHALLSTUDENT_OBJ.BusinessObjectID>(); foreach (var code in listCode) { var item = bus.GetByID(new EXAMHALLSTUDENT_OBJ.BusinessObjectID(code)); if (item != null) { deletedata.Add(item._ID); } } if (deletedata.Count > 0) { //mặc định khi vào danh sách này là xóa thành công nên ret= 1; //duyệt toàn bộ danh sách bản ghi để xóa bus.BeginTransaction(); ret = bus.DeletetMultiItems(deletedata); if (ret < 0) { //Trong trường hợp nhiều thao tác, có một thao tác không thành công, //hàm này được gọi để quay lại trạng thái trước khi thực hiện (bắt đầu từ khi gọi BeginTransaction() bus.RollbackTransaction(); } else { //Sau khi thao tác dữ liệu thành công, hàm này được gọi để thực hiện ghi vào cơ sở dữ liệu bus.CommitTransaction(); } } bus.CloseConnection(); return Json(new { ret }, JsonRequestBehavior.AllowGet); }
/// <summary> /// lấy kết quả bài thi dựa trên mark code /// </summary> /// <param name="markcode"></param> /// <returns></returns> /// show questiongroup /// show question /// show answer /// put data//hide other answer public JsonResult ShowData(string markcode) { var ret = -1; int numberQuestion = 0; //dựa vào mã sinh viên thuộc lớp môn học nào sẽ xác định mã sinh bài thi của phòng nào đó cho môn học đó EXAMHALLSTUDENT_BUS bus = new EXAMHALLSTUDENT_BUS(); EXAMHALLSTUDENT_OBJ obj = bus.GetByKey(new fieldpara("MARKCODE", markcode, 0)); bus.CloseConnection(); //bài kiểm tra EXAMFORM_BUS busExamform = new EXAMFORM_BUS(); EXAMFORM_OBJ objExamform = null; if (ret >= 0) { objExamform = busExamform.GetByID((new EXAMFORM_OBJ.BusinessObjectID(obj.EXAMFORMCODE))); busExamform.CloseConnection(); if (objExamform == null) { ret = -2; } } //Danh sachs cau truc EXAMFORMDETAIL_BUS busExamformdetail = new EXAMFORMDETAIL_BUS(); List <EXAMFORMDETAIL_OBJ> liExamformdetail = new List <EXAMFORMDETAIL_OBJ>(); if (ret >= 0) { if (objExamform != null) { liExamformdetail = busExamformdetail.getAllBy2("THEORDER", new fieldpara("EXAMFORMCODE", objExamform.CODE)); } busExamformdetail.CloseConnection(); if (liExamformdetail == null) { ret = -3; } } List <fieldpara> lipa = new List <fieldpara>(); List <jointable> lijoin = new List <jointable>(); //Lay danh sach cac nhom cau hoi QUESTIONGROUP_BUS busQuestiongroup = new QUESTIONGROUP_BUS(); List <QUESTIONGROUP_OBJ> liQuestiongroup = new List <QUESTIONGROUP_OBJ>(); if (ret >= 0) { if (objExamform != null) { lijoin.Add(new jointable(typeof(EXAMFORMDETAIL_OBJ), "CODE", "QUESTIONGROUPCODE", new fieldpara("EXAMFORMCODE", objExamform.CODE))); } liQuestiongroup = busQuestiongroup.getAllBy2("CODE", lipa, lijoin); if (liQuestiongroup == null) { ret = -4; } busQuestiongroup.CloseConnection(); } //Lay danh sach cau hoi QUESTION_BUS busQuestion = new QUESTION_BUS(); List <QUESTION_OBJ> liQuestion = new List <QUESTION_OBJ>(); if (ret >= 0) { lijoin.Clear(); if (objExamform != null) { lijoin.Add(new jointable(typeof(EXAMFORMDETAIL_OBJ), "QUESTIONGROUPCODE", "QUESTIONGROUPCODE", new fieldpara("examformcode", objExamform.CODE))); } liQuestion = busQuestion.getAllBy2("CODE", lipa, lijoin); if (liQuestion == null) { ret = -5; } else { numberQuestion = liQuestion.Count; } busQuestion.CloseConnection(); } //Lay danh danh cac dap an ANSWER_BUS busAnswer = new ANSWER_BUS(); List <ANSWER_OBJ> liAnswer = new List <ANSWER_OBJ>(); if (ret >= 0) { lijoin.Clear(); if (objExamform != null) { lijoin.Add((new jointable(typeof(EXAMFORMDETAIL_OBJ), "QUESTIONGROUPCODE", "QUESTIONGROUPCODE", new fieldpara("examformcode", objExamform.CODE)))); } liAnswer = busAnswer.getAllBy2("CODE", lipa, lijoin); if (liAnswer == null) { ret = -6; } busAnswer.CloseConnection(); } var jsonResult = Json(new { numberQuestion, //so luong cau hoi ObjexamHallstudent = obj, //examhallstudent code ObjexamForm = objExamform, //examform liExamformDetail = liExamformdetail, //Danh sách examdetail liQuestiongroup, li_question = liQuestion, li_answer = liAnswer, ret//ok }, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = int.MaxValue; return(jsonResult); }
/// <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; }
/// <summary> /// xóa sinh viên của lớp môn học /// cho phep xoa hay khong /// ret= -2 ;//sử dụng trong trường hợp xóa đơn một bản ghi có tham chiếu /// ret= 0 : không có gì để xóa /// ans = 1: //xóa thành công /// ret= -3 : Bản ghi hiện tại không còn trong hệ thống, truy cập trái phép /// </summary> /// <param name="listStudentCode">danh sách mã sinh viên</param> /// <param name="coursecode">mã lớp môn học</param> /// <returns></returns> public JsonResult DeleteStudentCourse(List <string> listStudentCode, string coursecode) { int ret = 0; EXAMHALLSTUDENT_BUS busExam = new EXAMHALLSTUDENT_BUS(); List <fieldpara> lipa = new List <fieldpara>(); MARK_BUS busMark = new MARK_BUS(); List <MARK_OBJ.BusinessObjectID> deleteListId = new List <MARK_OBJ.BusinessObjectID>(); //kiểm tra tất cả các item đưa vào xem có con hay không foreach (var item in listStudentCode) { var mark = busMark.GetByID(new MARK_OBJ.BusinessObjectID(item)); //check xem subject có còn tồn tại trong hệ thống hay không if (mark == null) { ret = -3; return(Json(new { ret }, JsonRequestBehavior.AllowGet)); } // ** chú ý: nếu muốn xóa nhiều bản ghi thì cần phải clear lipa trước khi sử dụng nó lại lipa.Clear(); lipa.Add(new fieldpara("MARKCODE", item, 0)); lipa.Add(new fieldpara("COURSECODE", coursecode, 0)); lipa.Add(new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0)); //checkcode sẽ trả về là 0 nếu không có con // nhiều hơn 0 tức là tồn tại bản ghi con // nhỏ hơn 0 tức là lỗi hệ thống var exams = busExam.checkCode(null, lipa.ToArray()); //nếu không có con thì cho vào danh sách xóa //tức là checkcode sẽ trả về là số lượng bản ghi con phụ thuộc //bad request if (exams < 0) { //nếu mà gặp lỗi thì thoát luôn không cần xóa gì nữa ret = -3; return(Json(new { ret }, JsonRequestBehavior.AllowGet)); } if (exams == 0) { //add to delete list deleteListId.Add(mark._ID); } } //nếu phần tử nằm trong danh sách xóa có thì sẽ phải xóa //xóa 1 bản ghi và trong trường hợp muốn xóa đơn lẻ mà bản ghi đưa vào không tồn tại con ////có 1 bản ghi và bản ghi đó không được phép xóa if (listStudentCode.Count == 1 && deleteListId.Count < 1) { //không cho xóa 1 bản ghi ret = -2; } //còn đây là trường hợp xóa nhiều, cứ thông báo là xóa thành công là xong //mặc dù còn có các bản ghi không được xóa còn có tham chiếu nhưng không nên thông báo quá chi tiết if (deleteListId.Count >= 1) { //mặc định khi vào danh sách này là xóa thành công nên ret= 1; //duyệt toàn bộ danh sách bản ghi để xóa busMark.BeginTransaction(); ret = busMark.DeletetMultiItems(deleteListId); if (ret < 0) { //Trong trường hợp nhiều thao tác, có một thao tác không thành công, //hàm này được gọi để quay lại trạng thái trước khi thực hiện (bắt đầu từ khi gọi BeginTransaction() busMark.RollbackTransaction(); } else { //Sau khi thao tác dữ liệu thành công, hàm này được gọi để thực hiện ghi vào cơ sở dữ liệu busMark.CommitTransaction(); } } //close all connection busExam.CloseConnection(); busMark.CloseConnection(); return(Json(new { ret }, JsonRequestBehavior.AllowGet)); }