using System; using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; using WebLib; namespace Education { public partial class FormBase : WebLib.FormBase { // 資料存取類別變數 //protected DAC_部門 Dao部門 = new DAC_部門(); public DAC_GetData GetData; public DAC_場地 Dao場地; public DAC_講師 Dao講師; public DAC_BCLS Dao類別; public DAC_BPSN Dao員工; public DAC_職務 Dao職務; public DAC_組織圖 Dao組織圖; public DAC_課程 Dao課程; public DAC_公司別 Dao公司別 = new DAC_公司別(); public DAC_訓練課程企劃 Dao訓練課程企劃; public DAC_課程報名 Dao課程報名; public DAC_表單簽核主檔 Dao表單簽核主檔; public DAC_站別 Dao站別; public DAC_片語 Dao片語; protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); systemName = PublicVariable.SystemName; GetData = new DAC_GetData(); Dao類別 = new DAC_BCLS(conn); Dao員工 = new DAC_BPSN(conn); Dao職務 = new DAC_職務(conn); Dao場地 = new DAC_場地(conn); Dao講師 = new DAC_講師(conn); Dao組織圖 = new DAC_組織圖(conn); Dao課程 = new DAC_課程(conn); Dao訓練課程企劃 = new DAC_訓練課程企劃(conn); Dao課程報名 = new DAC_課程報名(conn); Dao表單簽核主檔 = new DAC_表單簽核主檔(conn); Dao站別 = new DAC_站別(conn); Dao片語 = new DAC_片語(conn); } /// /// 向 ScriptManager 註冊要 觸發Postback 的控制項 /// /// public void RegisterPostbackTrigger(Control ctrl) { if (ScriptManager.GetCurrent(Page) != null && ctrl != null) { ScriptManager.GetCurrent(Page).RegisterPostBackControl(ctrl); } } protected override bool IsSetMasterPage() { return false; } /// /// 公司別編號 /// public string CompanyId { get { return DAC.GetString(Session[PublicVariable.CompanyId]); } } /// /// 公司別名稱 /// public string CompanyName { get { return Dao公司別.GetName(Session[PublicVariable.CompanyId]); } } /// /// 判斷目前的使用者是否為某個群組的成員 /// /// /// public bool UserInGroup(string group_id) { List groups = (Session[PublicVariable.UserGroups] as List); if (groups != null) return groups.Contains(group_id); else return false; } /// /// 目前的使用者是否屬於管理群組 /// public bool IsManager { get { return DAC.GetBoolean(Session[PublicVariable.IsManager]); } } /// /// 目前的使用者是否屬於承辦人群組 /// public bool IsWorker { get { return DAC.GetBoolean(Session[PublicVariable.IsWorker]); } } /// /// 目前是否登入後台 /// public bool IsBackend { get { return DAC.GetBoolean(Session[PublicVariable.IsBackend]); } } /// /// 設定 Linkbutton 的 Enabled /// public void SetWebControlEnabled(WebControl ctrl, bool enabled) { if (ctrl == null) return; ctrl.Enabled = enabled; if (enabled) { ctrl.Attributes.Remove("disabled"); } else { ctrl.Attributes["disabled"] = "disabled"; } } public void ClientShowMessage(string message, string url = "") { if (System.Web.UI.ScriptManager.GetCurrent(this) != null) { if (url == null || url.Length == 0) { System.Web.UI.ScriptManager.RegisterStartupScript(this, Page.GetType(), "client_mesage", String.Format("alert(\"{0}\");", StringTable.GetString(message)), true); } else { System.Web.UI.ScriptManager.RegisterStartupScript(this, Page.GetType(), "client_mesage", String.Format("alert(\"{0}\"); window.location=\"{1}\";", StringTable.GetString(message), url), true); } } else { base.ClientShowMessage(message, url); } } /// /// 從 Validator 所在的 FormView 樣板尋找控制項並取得其值。 /// protected string FindFormValue(object source, string controlId) { Control container = (source as Control)?.NamingContainer; while (container != null) { Control control = container.FindControl(controlId); if (control is ListControl list) return list.SelectedValue ?? ""; if (control is ITextControl text) return text.Text ?? ""; container = container.NamingContainer; } return ""; } /// /// 以泛型取得容器內指定型別的控制項。 /// protected T FindControl(Control container, string controlId) where T : class { return container == null ? null : container.FindControl(controlId) as T; } #region 資料查找相關 public string Get類別名稱(object 類別大類, object 類別編號) { return Dao類別.Get類別名稱(類別大類, 類別編號); } public string Get員工姓名(object 員工編號) { return Dao員工.Get員工姓名(員工編號); } public string Get職務名稱(object 職務ID) { return Dao職務.Get職務名稱(職務ID); } public string Get組織名稱(object 組織ID) { return Dao組織圖.Get組織名稱(組織ID); } public string Get場地名稱(object 場地ID) { return Dao場地.Get場地名稱(場地ID); } public string Get講師姓名(object 講師ID) { return Dao講師.Get姓名(講師ID); } public string Get訓練企劃名稱(object 訓練企劃ID) { 訓練課程企劃List d = Dao訓練課程企劃.SelectOne(DAC.GetInt32(訓練企劃ID)); if (d.Count == 0) return ""; else return d[0].訓練名稱; } #endregion #region 格式檢查相關 /// /// 驗證電子郵件格式 /// public static bool IsValidEmail(string email) { if (string.IsNullOrEmpty(email)) return false; // 基本格式檢查 string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"; if (!System.Text.RegularExpressions.Regex.IsMatch(email, pattern)) return false; // 進階檢查(使用 .NET 內建類別) try { var addr = new System.Net.Mail.MailAddress(email); return (addr.Address == email); } catch { return false; } } #endregion #region 片語 protected string GetPhraseClientClick(string controlId, string content) { string CID = ""; CID = (Form_View.FindControl(controlId) as Control).ClientID; if (CID.Length > 0) return String.Format("javascript:FillMessage(\"{0}\", \"{1}\");return false;", CID, content); else return "javascript:return false;"; } #endregion } }