/// <summary> /// Thiết lập các giá trị mặc định cho class /// </summary> private void VietBaInitialize() { //Lấy về tên DLL. ManifestModule.Name ban đầu có dạng "DLLName.dll"-->Ta chỉ lấy phần "DLLName" AssName = this.GetType().Assembly.ManifestModule.Name;// System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name; //Thiết lập chế độ MultiLanguage cho class if (globalVariables.SqlConn != null) { //MultiLanguage.SetLanguage(globalVariables.DisplayLanguage, this, AssName.Split('.')[0], globalVariables.SqlConn); //Khởi tạo tính năng tùy biến cấu hình ẩn hiện cột trên DataGridView. Chỉ có Form nào chứa DataGridView thì mới cần //khai báo mục này // VietBaIT.CommonLibrary.GridViewUtils _GridViewUtils = new VietBaIT.CommonLibrary.GridViewUtils(this, globalVariables.Branch_ID, globalVariables.UserName, AssName, true); } //Tạo Trace cho chức năng này Trace = new TraceInfor(globalVariables.Branch_ID, globalVariables.UserName, System.DateTime.Now.ToShortDateString(), Utility.GetIPAddress(), AssName.Split('.')[0], globalVariables.SubSystemName, globalVariables.FunctionID, globalVariables.FunctionName, Utility.GetComputerName(), Utility.GetAccountName()); //Utility.InitSubSonic(globalVariables.SqlConnectionString, globalVariables.ProviderName); }
///<summary> ///<para>Lấy về đối tượng vết từ gói tin gửi từ Client lên Application Server: Header</para> ///</summary> /// <param name="Header"><para>Dataset chứa Header chứa thông tin vết. Thường là Header <see cref="DataTable"/></para></param> ///<returns>HISTrace nếu tồn tại Header. Ngược lại trả về null.</returns> public static TraceInfor GetTraceObjectFromHeader(DataSet Header) { TraceInfor trace = new TraceInfor(); try { if (Header.Equals(null) || Header.Tables.Count <= 0 || Header.Tables["Header"].Rows.Count <= 0) { //Utility.ShowMsg("Header bạn đưa vào chưa được khởi tạo nên chưa có thông tin về Trace. Đề nghị bạn xem lại..."); return null; } //Read from Header Into Trace trace.pID = Int32Dbnull(Header.Tables["Header"].Rows[0]["ID"], 0); trace.pBranchID = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["BranchID"])); trace.pUserName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["UserName"])); trace.pCreatedDate = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["CreatedDate"])); trace.pIPAddress = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["IPAddress"])); trace.ComputerName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["ComputerName"])); trace.AccountName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["AccountName"])); trace.DLLName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["DLLName"])); trace.pSubSystemName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["SubSystemName"])); trace.pFunctionID = Int16Dbnull(Header.Tables["Header"].Rows[0]["FunctionID"]); trace.FunctionName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["FunctionName"])); trace.pTableName = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["TableName"])); trace.pDesc = CorrectStringValue(sDbnull(Header.Tables["Header"].Rows[0]["Desc"])); trace.pLO = Int16Dbnull(Header.Tables["Header"].Rows[0]["LOT"], 0); return trace; } catch (Exception ex) { Utility.ShowMsg("Lỗi khi lấy đối tượng vết từ Header:\n" + ex.Message); return null; } }
///<summary> ///<para>Lưu vết người dùng</para> ///</summary> /// <param name="trace"><para>Đối tượng vết <see cref="HISTrace"/></para></param> ///<returns> /// <para>ResultType.SaveTraceSuccess nếu SaveTrace thành công</para> /// <para>ResultType.CannotSaveTrace or ResultType.Exception nếu SaveTrace không thành công</para> ///</returns> public static ActionResult SaveTrace(TraceInfor trace, System.Data.SqlClient.SqlTransaction Trans) { if (trace == null) { //Utility.ShowMsg("Bạn phải khởi tạo đối tượng trace=new TraceInfor() trước khi sử dụng Method này"); //Nếu TraceInfor=null có nghĩa là ko cần theo dõi vết đối với nghiệp vụ đang xét return ActionResult.Success; } return new TraceController(trace).Save(Trans); }
///<summary> ///<para>Đưa giá trị của vết vào Header trước khi gửi lên Business xử lý</para> ///</summary> /// <param name="Header"><para>Bảng lưu vết</para></param> /// <param name="trace"><para>Đối tượng vết <see cref="HISTrace"/></para></param> public void MergeTraceIntoHeader(ref DataTable Header, TraceInfor trace) { try { DataRow dr; bool bExist = false; if (Header.Equals(null)) { Utility.ShowMsg("Không thể gắn Trace vào Header vì đối tượng Header bạn truyền vào chưa được khởi tạo. Đề nghị bạn xem lại..."); return; } if (Header.Rows.Count > 0) { dr = Header.Rows[0]; bExist = true; } else { bExist = false; dr = Header.NewRow(); } //Read from Header Into Trace if (trace == null) return; dr["ID"] = Utility.Int16Dbnull(trace.pID, 0); dr["BranchID"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pBranchID)); dr["UserName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pUserName)); dr["CreatedDate"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pCreatedDate, DateTime.Now.ToShortDateString())); dr["IPAddress"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pIPAddress)); dr["ComputerName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.ComputerName)); dr["AccountName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.AccountName)); dr["DLLName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.DLLName)); dr["SubSystemName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pSubSystemName)); dr["FunctionID"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pFunctionID)); dr["FunctionName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.FunctionName)); dr["TableName"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pTableName)); dr["Desc"] = Utility.CorrectStringValue(Utility.sDbnull(trace.pDesc)); dr["LOT"] = Utility.Int16Dbnull(trace.pLO, 0); if (!bExist) { Header.Rows.Add(dr); } Header.AcceptChanges(); } catch (Exception ex) { Utility.ShowMsg("Lỗi khi tạo gán thông tin Trace vào Header:\n" + ex.Message); return; } }
public TraceController(TraceInfor Infor) { this.Infor = Infor; }
///<summary> ///<para>Tạo Header có gắn DML type và HISTrace</para> ///</summary> /// <param name="Header"><para>Header chứa gói tin</para></param> /// <param name="action"><para>Loại nghiệp vụ cần thao tác <see cref="action"/></para></param> /// <param name="trace"><para>Đối tượng lưu vết <see cref="HISTrace"/></para></param> ///<returns></returns> public static void CreateHeader(ref DataTable Header, action action, TraceInfor trace) { try { if ((Header == null)) { Utility.ShowMsg("Header chưa được khởi tạo. Đề nghị LTV khai báo Header=new Header() trước khi sử dụng thủ tục này!"); return; } if (trace == null) { //Utility.ShowMsg("Bạn chưa khởi tạo đối tượng trace. Đề nghị bạn khởi tạo trace trước khi sử dụng hàm này!"); return; } //Read from Header Into Trace DataRow dr = Header.NewRow(); dr["action"] = action; dr["ID"] = trace.pID; dr["BranchID"] = CorrectStringValue(sDbnull(trace.pBranchID)); dr["UserName"] = CorrectStringValue(sDbnull(trace.pUserName)); dr["CreatedDate"] = CorrectStringValue(sDbnull(trace.pCreatedDate)); dr["IPAddress"] = CorrectStringValue(sDbnull(trace.pIPAddress)); dr["ComputerName"] = CorrectStringValue(sDbnull(trace.ComputerName)); dr["AccountName"] = CorrectStringValue(sDbnull(trace.AccountName)); dr["DLLName"] = CorrectStringValue(sDbnull(trace.DLLName)); dr["SubSystemName"] = CorrectStringValue(sDbnull(trace.pSubSystemName)); dr["FunctionID"] = CorrectStringValue(sDbnull(trace.pFunctionID)); dr["FunctionName"] = CorrectStringValue(sDbnull(trace.FunctionName)); dr["TableName"] = CorrectStringValue(sDbnull(trace.pTableName)); dr["Desc"] = CorrectStringValue(sDbnull(trace.pDesc)); dr["LOT"] = Int32Dbnull(trace.pLO, 0); Header.Rows.Add(dr); Header.AcceptChanges(); } catch (Exception ex) { Utility.ShowMsg("Lỗi khi tạo Header từ Trace:\n" + ex.Message); return; } }