/// <summary> /// multi delete, trước khi xóa một bản khi bất kì cần xác định được bản ghi có bản ghi con hay không /// giả sử trong list các bản ghi cần xóa có cả bản ghi cho phép xóa và không thì chỉ xóa những bản ghi được phép /// thông báo đã xóa chứ không thông báo chi tiết rằng bản ghi nào được và bản ghi nào không được xóa /// 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="code"></param> /// <returns></returns> public JsonResult Delete(List <string> code) { COURSE_BUS courseBus = new COURSE_BUS(); List <fieldpara> lipa = new List <fieldpara>(); SUBJECT_BUS subjectBus = new SUBJECT_BUS(); var ret = 0; // danh sách bussinessID List <SUBJECT_OBJ.BusinessObjectID> deleteListId = new List <SUBJECT_OBJ.BusinessObjectID>(); //kiểm tra tất cả các item đưa vào xem có con hay không foreach (var item in code) { var subject = subjectBus.GetByID(new SUBJECT_OBJ.BusinessObjectID(item)); //check xem subject có còn tồn tại trong hệ thống hay không if (subject == 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("SUBJECTCODE", item, 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 courses = courseBus.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 (courses < 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 (courses == 0) { //add to delete list deleteListId.Add(subject._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 (code.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 subjectBus.BeginTransaction(); ret = subjectBus.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() subjectBus.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 subjectBus.CommitTransaction(); } } //close all connection courseBus.CloseConnection(); subjectBus.CloseConnection(); return(Json(new { ret }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// update đối tượng môn học /// </summary> /// <param name="obj">đối tượng môn học đưa vào -subjectobj</param> /// <param name="educationlevelcode">mã đối tượng cấp trên -- đang mặc định là đại học DH</param> /// <returns></returns> public JsonResult Update(SUBJECT_OBJ obj, string educationlevelcode) { int ret; int add = 0; //if (_ses.isLogin() < 0) //{ // return Json(new { ret = -1 }, JsonRequestBehavior.AllowGet); //} SUBJECT_BUS bus = new SUBJECT_BUS(); //kiểm tra tồn tại cho trường hợp sửa var objTemp = !string.IsNullOrEmpty(obj.CODE) ? bus.GetByID(new SUBJECT_OBJ.BusinessObjectID(obj.CODE)) : new SUBJECT_OBJ(); //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.UNIVERSITYCODE = _ses.gUNIVERSITYCODE; objTemp.NOTE = obj.NOTE; objTemp.LOCK = obj.LOCK; objTemp.LANG = _ses.getLang(); objTemp.EDUCATIONLEVELCODE = educationlevelcode ?? "DH"; //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); //lock date =now objTemp.LOCKDATE = DateTime.Now; } //nếu là trường hợp thêm mới if (add == 1) { //thêm mới //dán ret là biến giá trị kiểm soát -1, 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); } int pagecount = 0; int currentpage = 0; if (ret >= 0) { List <fieldpara> lipa = new List <fieldpara>(); //Lọc đơn vị cấp trên; '' sẽ là không co đơn vị cấp trên if (!string.IsNullOrEmpty(educationlevelcode)) { lipa.Add(new fieldpara("EDUCATIONLEVELCODE", educationlevelcode, 0)); } lipa.Add(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(); //vì hiện tại chưa phân trang nên page count và currentpage để cho vui, sau tính return(Json(new { ret, pagecount, currentpage }, JsonRequestBehavior.AllowGet)); }