示例#1
0
        /// <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));
        }
示例#2
0
        /// <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));
        }