public JsonResult delete(List <string> listCode) { int ret = 0; STUDENT_BUS bus = new STUDENT_BUS(); foreach (var id in listCode) { STUDENT_OBJ obj = bus.GetByID(new STUDENT_OBJ.BusinessObjectID(id)); //Kiểm tra đối tượng còn trên srrver hay không if (obj == null) { ret = -1; } //Kiểm tra thuộc đơn vị triển khai if (obj.UNIVERSITYCODE != ses.gUNIVERSITYCODE) { ret = -4; } if (ret >= 0) { MARK_BUS busMark = new MARK_BUS(); //kiểm tra sinh viên có trong lớp môn học nào không ret = busMark.checkCode(null, new fieldpara("STUDENTCODE", id)); busMark.CloseConnection(); //exist children if (ret != 0) { ret = -2; } } if (ret >= 0) { //xóa ret = bus.delete(obj._ID); } } //close connection bus.CloseConnection(); return(Json(new { ret = ret }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// xóa 1 couse , kiểm tra xem có các bản ghi con phụ thuộc hay không trước khi xóa /// </summary> /// <param name="code"></param> /// <returns></returns> public JsonResult Delete(List <string> code) { //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 //ret = 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 COURSE_BUS busCourse = new COURSE_BUS(); List <fieldpara> lipa = new List <fieldpara>(); MARK_BUS busMark = new MARK_BUS(); var ret = 0; List <COURSE_OBJ.BusinessObjectID> deleteList = new List <COURSE_OBJ.BusinessObjectID>(); foreach (string item in code) { var course = busCourse.GetByID(new COURSE_OBJ.BusinessObjectID(item)); //check xem course co ton tai ban ghi phu thuoc nao khong if (course == null) { ret = -3; return(Json(new { ret }, JsonRequestBehavior.AllowGet)); } lipa.Clear(); lipa.Add(new fieldpara("COURSECODE", item, 0)); lipa.Add(new fieldpara("UNIVERSITYCODE", _ses.gUNIVERSITYCODE, 0)); //kiểm tra xem có bản ghi con hay không //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 marks = busMark.checkCode(null, lipa.ToArray()); //cho phép xóa thì nhét vào list xóa không thì không cho phép xóa nhưng cũng không cần thông báo //vì có trường hợp xóa nhiều bản ghi và chỉ xóa 1 bản ghi nên cần xác định rõ trước khi xóa một bản ghi cha nào đó thì có tồn tại liên kết đến bản ghi con hay không //bad request if (marks < 0) { ret = -3; return(Json(new { ret }, JsonRequestBehavior.AllowGet)); } //add to delete list if (marks == 0) { deleteList.Add(course._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 có ràng buộc bản ghi con //có 1 bản ghi và bản ghi đó không được phép xóa if (code.Count == 1 && deleteList.Count < 1) { 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 (deleteList.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 busCourse.BeginTransaction(); ret = busCourse.DeletetMultiItems(deleteList); 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() busCourse.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 busCourse.CommitTransaction(); } } busMark.CloseConnection(); busCourse.CloseConnection(); return(Json(new { ret }, JsonRequestBehavior.AllowGet)); }