public JsonResult Delete(List <String> listCode) { var ret = 0; if (listCode == null) { ret = -1; } else { var bus = new EXAMHALL_BUS(); var bus2 = new EXAMHALLSTUDENT_BUS(); List <EXAMHALL_OBJ.BusinessObjectID> deletedata = new List <EXAMHALL_OBJ.BusinessObjectID>(); List <fieldpara> lipa = new List <fieldpara>(); foreach (string t in listCode) { var item = bus.GetByID(new EXAMHALL_OBJ.BusinessObjectID(t)); lipa.Clear(); lipa.Add(new fieldpara("EXAMHALLCODE", t, 0)); lipa.Add(new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0)); if (item != null) { ret = bus2.checkCode(null, lipa.ToArray()); } if (ret > 0) { ret = new EXAMFORM_BUS().checkCode(null, lipa.ToArray()); } if (ret < 0) { return(Json(new { ret = -2 }, JsonRequestBehavior.AllowGet)); } if (ret >= 0) { 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> /// 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)); }