コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnException(ExceptionContext filterContext)
        {
            this.ControllerID = filterContext.RouteData.Values["controller"].ToString();
            this.ActionID     = filterContext.RouteData.Values["action"].ToString();


            PORTALDB DB = new PORTALDB();

            base.OnException(filterContext);
            Exception   exception = filterContext.Exception;
            int         logGuId   = new System.Random().Next(0, 32767);
            PTSYSLOGERR Log       = new PTSYSLOGERR();

            Log.ERR_GID  = logGuId;
            Log.ERR_SRC  = exception.Source;
            Log.ERR_SMRY = string.Format("messages:{0} 。 innerException:{1}", exception.Message, exception.InnerException);
            Log.ERR_DESC = exception.StackTrace;
            Log.LOG_DTM  = DateTime.UtcNow.AddHours(8);
            DB.PTSYSLOGERR.Add(Log);
            DB.SaveChanges();


            var typedResult = filterContext.Result as ViewResult;

            if (typedResult != null)
            {
                var tmpModel = typedResult.ViewData.Model;
                typedResult.ViewData       = filterContext.Controller.ViewData;
                typedResult.ViewData.Model = tmpModel;
                typedResult.ViewData.Add("LogGuId", logGuId);
                filterContext.Result = typedResult;
            }
        }
コード例 #2
0
        /// <summary>
        /// 檢查目錄是否已被停用
        /// </summary>
        /// <param name="filterContext"></param>
        private void RuleCheckMenuIsDisabled(AuthorizationContext filterContext)
        {
            PORTALDB PorDB = new PORTALDB();
            //子目錄
            string path = this.ControllerID + "/" + this.ActionID;
            var    func = PorDB.PTFunction.Where(o => o.FN_LINK == path).FirstOrDefault();

            if (func != null)
            {
                string muID    = func.MAP_MUID;
                bool   enabled = (bool)PorDB.PTMenu.Where(o => o.MUID == muID).First().ACT_FG;
                if (!enabled)
                {
                    Exception       exp         = new Exception("此目錄已被停用");
                    HandleErrorInfo errorHandle = new HandleErrorInfo(exp, this.ControllerID, this.ActionID);
                    string          viewName    = "~/Views/Shared/Error.cshtml";
                    var             viewReuslt  = new ViewResult();
                    viewReuslt.ViewName = viewName;
                    viewReuslt.ViewData = new ViewDataDictionary <HandleErrorInfo>(errorHandle);
                    viewReuslt.ViewData.Add("LogGuId", "0000");
                    filterContext.Result = viewReuslt;
                }
            }

            //根目錄
            var rootDirectory = PorDB.PTFunction.Where(o => o.FN_LINK == this.ControllerID + "/").FirstOrDefault();

            if (rootDirectory != null)
            {
                string rMuID   = rootDirectory.MAP_MUID;
                bool   enabled = (bool)PorDB.PTMenu.Where(o => o.MUID == rMuID).First().ACT_FG;
                if (!enabled)
                {
                    Exception       exp         = new Exception("此根目錄已被停用");
                    HandleErrorInfo errorHandle = new HandleErrorInfo(exp, this.ControllerID, this.ActionID);
                    string          viewName    = "~/Views/Shared/Error.cshtml";
                    var             viewReuslt  = new ViewResult();
                    viewReuslt.ViewName = viewName;
                    viewReuslt.ViewData = new ViewDataDictionary <HandleErrorInfo>(errorHandle);
                    viewReuslt.ViewData.Add("LogGuId", "0000");
                    filterContext.Result = viewReuslt;
                }
            }
        }
コード例 #3
0
        public static MvcHtmlString Breadcrumb(this HtmlHelper helper, string controllerName, string actionName)
        {
            PORTALDB PorDB   = new PORTALDB();
            string   htmlStr = string.Empty;
            List <BreadcrumbModel> breadcrumb = new List <BreadcrumbModel>();
            string path       = controllerName + "/" + actionName;
            var    controller = PorDB.PTFunction.Where(o => o.FN_LINK == string.Concat(controllerName, "/")).FirstOrDefault();
            var    action     = PorDB.PTFunction.Where(o => o.FN_LINK == path).FirstOrDefault();

            if (action != null)
            {
                breadcrumb.Add(new BreadcrumbModel()
                {
                    MenuID = action.MAP_MUID
                });
                for (; ;)
                {
                    var parentID = PorDB.PTMenu.Where(o => o.MUID == action.MAP_MUID).First().MUPID;
                    if (string.IsNullOrEmpty(parentID))
                    {
                        breadcrumb = breadcrumb.OrderBy(o => o.MenuID).ToList();
                        break;
                    }
                    breadcrumb.Add(new BreadcrumbModel()
                    {
                        MenuID = parentID
                    });
                    action.MAP_MUID = parentID;
                }

                foreach (var b in breadcrumb)
                {
                    b.MenuName = PorDB.PTMenu.Where(o => o.MUID == b.MenuID).First().MU_NM;
                    htmlStr   += string.Format(@"<a href=""{0}"" class=""current"">{1}</a>", b.MenuPath, b.MenuName);
                }
            }

            /*
             * <a href="#" title="Go to Home" class="tip-bottom"><i class="icon-home"></i> Home</a>
             * <a href="#" class="current">Buttons &amp; icons</a>
             */
            return(MvcHtmlString.Create(htmlStr));
        }
コード例 #4
0
        /// <summary>
        /// 取得Portal系統內的員工資料基本檔 依據ADAccount
        /// </summary>
        /// <param name="adID"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public Employee GetPrototypeEmployeeByAccountID(string adID, PORTALDB db)
        {
            Employee emp = db.Employee.Where(o => o.ADAccount == adID).FirstOrDefault();

            return(emp);
        }
コード例 #5
0
        /// <summary>
        /// 取得其他資訊資訊(包含開立部門) 並依開立部門分類 近來為日期分類,出去為部門分類
        /// </summary>
        /// <param name="data"></param>
        private void GetDeatilsInfo(ref Dictionary <string, List <EinvoiceDataModel> > data)
        {
            DBERP    erpDB      = new DBERP();
            HRISDB   smartmanDB = new HRISDB();
            PORTALDB portalDB   = new PORTALDB();

            foreach (var d in data)
            {
                var model = d.Value;
                foreach (var inv in model)
                {
                    string invNo = inv.Data.MInvoiceNumber;

                    #region 依照發票號碼取出訂單號以及開立單位代碼

                    inv.Detalis = erpDB.Rinnai_Sales_Invoice_Line
                                  .Where(o => o.VAT_Transaction_Number == invNo)
                                  .Select(o => new DetalisInfo()
                    {
                        OrderNo        = o.Shipment_No_,
                        DepartmentCode = o.Shortcut_Dimension_1_Code
                    })
                                  .FirstOrDefault();

                    #endregion 依照發票號碼取出訂單號以及開立單位代碼

                    #region 找出單位主管以及單位名稱

                    if (inv.Detalis != null)
                    {
                        var detalis =
                            smartmanDB.CODEDTL
                            .Where(s => s.TYPECD == "UNIT" &&
                                   s.CODECD == inv.Detalis.DepartmentCode).First();

                        inv.Detalis.DepartmentName = detalis.CODENAME;

                        //var mailObj = portalDB.Employee.Where(o => o.EmployeeID == detalis.Remark).FirstOrDefault();
                        //inv.Detalis.MailToObject = mailObj == null ? "" : mailObj.ADAccount;
                    }
                    else
                    {
                        inv.Detalis = new DetalisInfo()
                        {
                            OrderNo        = "查無資料",
                            DepartmentName = "查無資料",
                            DepartmentCode = "查無資料",
                            MailToObject   = new List <string>()
                            {
                                PublicRepository.AdminEmail
                            }
                        };
                    }

                    #endregion 找出單位主管以及單位名稱
                }

                #region 依照開立單位分類群組

                List <EinvoiceDataModel> preGroup = new List <EinvoiceDataModel>();
                foreach (var da in data)
                {
                    foreach (var item in da.Value)
                    {
                        preGroup.Add(item);
                    }
                }

                Dictionary <string, List <EinvoiceDataModel> > groupDepInv = preGroup
                                                                             .GroupBy(o => o.Detalis.DepartmentCode)
                                                                             .ToDictionary(g => g.Key, g => g.ToList());

                data = groupDepInv;

                #endregion 依照開立單位分類群組
            }
        }