public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode nodes) { var returnValue = new List<DynamicNode>(); using (EPSContext context =new EPSContext()) { var LoginUserID = HttpContext.Current.Session["UserID"].ToString(); int UserRole = Convert.ToInt32(HttpContext.Current.Session["UserRole"].ToString()); var query = from rm in context.ROLEFUNCMAPPINGS where rm.RId == UserRole join f in context.FUNCS on rm.FId equals f.FId into memu from x in memu.DefaultIfEmpty() select new { PId = x.PId, FId = x.FId, FuncName=x.FuncName, Controller=x.Controller, Action=x.Action, Url= x.Url, ShowOrder=x.ShowOrder }; var SysMenus = query.OrderBy(c=>c.ShowOrder).ToList(); foreach (var menu in SysMenus) { DynamicNode Node = new DynamicNode() { Title = menu.FuncName, ParentKey= menu.PId > 0 ? menu.PId.ToString():"", Key=menu.FId.ToString(), Controller=menu.Controller, Action=menu.Action, Url=menu.Url }; returnValue.Add(Node); } } return returnValue; }
/// <summary> /// 將執行結果寫入資料庫 /// </summary> /// <param name="_OPLogger">OPLoger類別</param> /// <remarks>2014/03/04 黃富彥</remarks> public void log2DB(SYSTEMLOG _SL, string _MailServer, int _MailServerPort, string _MailSender, List<string> _MailReceiver) { SYSTEMLOG SL = _SL; string MailServer = _MailServer; int MailServerPort = _MailServerPort; string MailSender = _MailSender; List<string> MailReceiver = _MailReceiver; string MailSubject = string.Empty; StringBuilder MailBody = new StringBuilder(); string SendResult = string.Empty; try { using (EPSContext context =new EPSContext()) { context.SYSTEMLOG.Add(SL); context.SaveChanges(); //寫入文字檔Log logandshowInfo("[" + SL.UId + "]執行[寫入資料庫紀錄作業]成功", log_Info); } } catch (Exception ex) { //異常 //寫入文字檔Log logandshowInfo("[" + SL.UId + "]執行[寫入資料庫紀錄作業]發生未預期的異常,請查詢Debug Log得到詳細資訊", log_Info); logandshowInfo("[" + SL.UId + "]執行[寫入資料庫紀錄作業]發生未預期的異常,詳細資訊如下", log_Err); logandshowInfo("執行人:[" + SL.UId + "]", log_Err); logandshowInfo("執行模組名稱:[" + SL.Controller + "]", log_Err); logandshowInfo("執行作業名稱:[" + SL.Action + "]", log_Err); logandshowInfo("處理結果:[" + SL.Result.ToString() + "]", log_Err); logandshowInfo("起始時間:[" + SL.StartDateTime.ToString() + "]", log_Err); logandshowInfo("結束時間:[" + SL.EndDateTime.ToString() + "]", log_Err); logandshowInfo("處理總筆數:[" + SL.TotalCount.ToString() + "]", log_Err); logandshowInfo("處理成功筆數:[" + SL.SuccessCount.ToString() + "]", log_Err); logandshowInfo("處理失敗筆數:[" + SL.FailCount.ToString() + "]", log_Err); logandshowInfo("作業訊息:[" + SL.Msg + "]", log_Err); logandshowInfo("錯誤訊息:[" + ex.ToString() + "]", log_Err); //通知系統管理人員 MailSubject = "[異常]機房電子表單系統-執行[寫入資料庫紀錄作業]失敗"; MailBody.Append("<table>"); MailBody.Append("<tr><td>"); MailBody.Append("執行人:[" + SL.UId + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("執行模組名稱:[" + SL.Controller + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("執行作業名稱:[" + SL.Action + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("處理結果:[" + SL.Result.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("起始時間:[" + SL.StartDateTime.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("結束時間:[" + SL.EndDateTime.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("處理總筆數:[" + SL.TotalCount.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("處理成功筆數:[" + SL.SuccessCount.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("處理失敗筆數:[" + SL.FailCount.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("作業訊息:[" + SL.Msg + "]"); MailBody.Append("</td></tr>"); MailBody.Append("<tr><td>"); MailBody.Append("錯誤訊息:[" + ex.ToString() + "]"); MailBody.Append("</td></tr>"); MailBody.Append("</table>"); EmailNotify2Sys(MailServer, MailServerPort, MailSender, MailReceiver, false, MailSubject, MailBody.ToString()); } }
/// <summary> /// 取得使用者角色ID /// </summary> /// <param name="UserID"></param> /// <returns></returns> public int getUserRole(string UserID) { //初始化系統參數 Configer.Init(); int Role = -1; using (EPSContext context = new EPSContext()) { Role = context.EPSUSERS.Find(UserID).RId; if (Role <= 0) { Role = Configer.PublicRoleID; } } return Role; }