/// <summary> /// update danh sách sinh viên lớp môn học /// </summary> /// <param name="listStudentCode">danh sách mã sinh viên</param> /// <param name="coursecode">mã lớp môn học</param> /// <param name="subjectcode">Môn học</param> /// <returns></returns> public JsonResult UpdateStudentCourse(List <string> listStudentCode, string coursecode, string subjectcode) { int ret = 0; MARK_BUS busMark = new MARK_BUS(); List <MARK_OBJ> liMark = new List <MARK_OBJ>(); MARK_OBJ midMarkObj = new MARK_OBJ(); //gennextcode to define first code to gennextcode for other n list string markCode = busMark.genNextCode(midMarkObj); if (listStudentCode == null) { ret = -1; } else { foreach (var studentCode in listStudentCode) { MARK_OBJ objMark = new MARK_OBJ { CODE = markCode }; markCode = busMark.GenNextCode(objMark, markCode); //gán giá trị code đầu tiên cho giá trị mặc định sinh được tiến hành gán lại giá trị mặc định mặc gennextcode của đối tượng hiện tại objMark.LOCKDATE = DateTime.Now; objMark.CODEVIEW = objMark.CODEVIEW; objMark.COURSECODE = coursecode; objMark.STUDENTCODE = studentCode; objMark.SUBJECTCODE = subjectcode; objMark.LOCK = 0; objMark.EDITTIME = DateTime.Now; // thời điểm sửa bản ghi objMark.EDITUSER = _ses.loginCode; objMark.UNIVERSITYCODE = _ses.gUNIVERSITYCODE; liMark.Add(objMark); } } //Tạo phiên làm việc, thực hiện trong trường hợp có nhiều thao tác với cơ sở dữ liệu, //yêu cầu khi thực hiện nhiều hơn một lệnh có thay đổi dữ liệu phải gọi phương thức này. busMark.BeginTransaction(); if (ret >= 0) { ret = busMark.InsertMultiItems(liMark); 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(); } } busMark.CloseConnection(); return(Json(new { ret }, JsonRequestBehavior.AllowGet)); }
/// <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)); }