Example #1
0
        public static bool HasPrivilegeRight(PrivilegeCode privilegeCode)
        {
            var key         = privilegeCode.ToString() + "User";
            var currentUser = WebHelper.GetCurrentUser().LoginName;

            return(ConfigurationManager.AppSettings[key].IndexOf(currentUser + ",", StringComparison.CurrentCultureIgnoreCase) >= 0);
            //var result = Auth.Client.AuthClientSDK.IsExistsFuntionAuth(privilegeCode.ToString());
            //return result;
            //return true;
        }
        /// <summary>
        /// 使用权限代码控制html元素显示
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="privilegeCode">权限代码</param>
        /// <param name="classSelector">
        /// 完整的css class选择器
        /// 该选择器将选中在没有权限时需要隐藏的html元素(应该尽量使用高权重的class选择器)
        /// </param>
        /// <exception cref="用户未登录的情况下会发生异常"></exception>
        /// <returns>css样式表</returns>
        /// <remarks>2013-09-25 黄波 创建</remarks>
        public static MvcHtmlString PrivilegeControl(this HtmlHelper helper, PrivilegeCode privilegeCode, params string[] classSelector)
        {
            var privilegeList = AdminAuthenticationBo.Instance.Current.PrivilegeList;
            var tag           = new TagBuilder("style");

            tag.MergeAttribute("type", "text/css");

            if (privilegeList == null || privilegeList.FirstOrDefault(item => item.Code == privilegeCode.ToString()) == null)
            {
                tag.InnerHtml += "\r\n";
                foreach (var selector in classSelector)
                {
                    tag.InnerHtml += (selector + " {display:none !important;}\r\n");
                }
            }
            return(MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)));
        }
 public PrivilegeType(PrivilegeCode code, string label)
 {
     this.code  = code;
     this.label = label;
 }
 public PrivilegeType(PrivilegeCode code, string label)
 {
     this.code = code;
     this.label = label;
 }
        public async Task <IActionResult> ModifyPrivilegeCode(PrivilegeCodeValidate model, IFormFile file)
        {
            if (!_loginServices.isInAdminRoles(this.GetRoles()))
            {
                return(RedirectToAction("Login", "Accounts"));
            }
            var pri = this._context.Privileges.Where(w => w.PrivilegeID == model.PrivilegeID).FirstOrDefault();

            if (pri == null)
            {
                ModelState.AddModelError("Error", "ไม่พบข้อมูลสิทธิพิเศษ");
            }
            if (ModelState.IsValid)
            {
                if (model.valid)
                {
                    if (model.PrivilegeCodes != null && model.PrivilegeCodes.Count() > 0)
                    {
                        foreach (var item in model.PrivilegeCodes)
                        {
                            item.PrivilegeID   = model.PrivilegeID;
                            item.EffectiveDate = DateUtil.ToDate(item.effDate);
                            item.ExpiryDate    = DateUtil.ToDate(item.expDate);
                            item.Status        = item.Status;
                            item.MaxUse        = item.MaxUse;
                            item.Create_On     = DateUtil.Now();
                            this._context.PrivilegeCodes.Add(item);
                        }
                        this._context.SaveChanges();
                        return(RedirectToAction("PrivilegeCode", new { result = 1, PrivilegeID = model.PrivilegeID }));
                    }
                }
                else
                {
                    if (file == null)
                    {
                        ModelState.AddModelError("Error", "ไม่พบข้อมูลไฟล์นำเข้า");
                    }
                    else
                    {
                        model.PrivilegeCodes     = new List <PrivilegeCode>();
                        model.PrivilegeCodeFails = new List <PrivilegeCodeFail>();

                        ModelState.Clear();

                        using (var memoryStream = new MemoryStream())
                        {
                            await file.CopyToAsync(memoryStream).ConfigureAwait(false);

                            using (var package = new ExcelPackage(memoryStream))
                            {
                                var workbook  = package.Workbook;
                                var worksheet = workbook.Worksheets.First();

                                var rowCount = worksheet.Dimension?.Rows;
                                var colCount = worksheet.Dimension?.Columns;
                                if (rowCount.HasValue && colCount.HasValue)
                                {
                                    for (int row = 2; row <= rowCount.Value; row++)
                                    {
                                        try
                                        {
                                            var cformat = worksheet.Cells["C" + row].Style.Numberformat.Format;
                                            var eformat = worksheet.Cells["D" + row].Style.Numberformat.Format;
                                            worksheet.Cells["C" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm";
                                            worksheet.Cells["D" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm";

                                            var code   = worksheet.Cells["A" + row].Value != null ? worksheet.Cells["A" + row].Value.ToString() : "";
                                            var maxuse = worksheet.Cells["B" + row].Value != null ? worksheet.Cells["B" + row].Value.ToString() : "";
                                            var eff    = worksheet.Cells["C" + row].Value != null ? worksheet.Cells["C" + row].Value : null;
                                            var exp    = worksheet.Cells["D" + row].Value != null ? worksheet.Cells["D" + row].Value : null;
                                            var status = worksheet.Cells["E" + row].Value != null ? worksheet.Cells["E" + row].Value.ToString() : "";

                                            var msg = new StringBuilder();
                                            if (string.IsNullOrEmpty(code))
                                            {
                                                msg.AppendLine("ไม่พบข้อมูล Code");
                                            }
                                            else
                                            {
                                                var pricode = this._context.PrivilegeCodes.Where(w => w.Code == code).FirstOrDefault();
                                                if (pricode != null)
                                                {
                                                    msg.AppendLine("Code ซ้ำในระบบ");
                                                }
                                            }
                                            var pcode = new PrivilegeCode();
                                            pcode.PrivilegeID = pri.PrivilegeID;
                                            pcode.Code        = code;
                                            pcode.MaxUse      = NumUtil.ParseInteger(maxuse);
                                            if (pcode.MaxUse == 0)
                                            {
                                                pcode.MaxUse = 1;
                                            }

                                            if (!string.IsNullOrEmpty(cformat) && cformat[0].ToString().ToLower() == "m")
                                            {
                                                pcode.EffectiveDate = (DateTime)eff;
                                            }
                                            else
                                            {
                                                pcode.EffectiveDate = DateUtil.ToDate(eff.ToString());
                                            }

                                            if (!string.IsNullOrEmpty(eformat) && eformat[0].ToString().ToLower() == "m")
                                            {
                                                pcode.ExpiryDate = (DateTime)exp;
                                            }
                                            else
                                            {
                                                pcode.ExpiryDate = DateUtil.ToDate(exp.ToString());
                                            }

                                            if (eff != null)
                                            {
                                                if (pcode.EffectiveDate == null)
                                                {
                                                    pcode.EffectiveDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(eff));
                                                }
                                            }
                                            if (exp != null)
                                            {
                                                if (pcode.ExpiryDate == null)
                                                {
                                                    pcode.ExpiryDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(exp));
                                                }
                                            }
                                            pcode.effDate = DateUtil.ToDisplayDate(pcode.EffectiveDate);
                                            pcode.expDate = DateUtil.ToDisplayDate(pcode.ExpiryDate);
                                            pcode.Status  = StatusType.InActive;
                                            if (status == "Y")
                                            {
                                                pcode.Status = StatusType.Active;
                                            }
                                            if (string.IsNullOrEmpty(msg.ToString()))
                                            {
                                                model.PrivilegeCodes.Add(pcode);
                                            }
                                            else
                                            {
                                                model.PrivilegeCodes.Clear();
                                                var fail = new PrivilegeCodeFail();
                                                fail.Code          = code;
                                                fail.EffectiveDate = pcode.effDate;
                                                fail.ExpiryDate    = pcode.expDate;
                                                fail.MaxUse        = pcode.MaxUse;
                                                fail.message       = msg.ToString();
                                                fail.Status        = pcode.Status.toStatusName();
                                                fail.row           = row;
                                                model.PrivilegeCodeFails.Add(fail);
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            ModelState.AddModelError("Error", ex.Message);
                                        }
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("Error", "รูปแบบไฟล์ไม่ถูกต้องหรือไม่มีข้อมูล");
                                }
                            }
                        }
                    }
                }
            }

            return(View("PrivilegeCode", model));
        }
        public async Task <JsonResult> ValidateCode(int?PrivilegeID, IFormFile excelfile)
        {
            if (!_loginServices.isInAdminRoles(this.GetRoles()))
            {
                return(Json(new
                {
                    responseCode = "-403",
                    responseDesc = "คุณไม่มีสิทธิ์เข้าถึงระบบ",
                }));
            }
            if (excelfile == null)
            {
                return(Json(new
                {
                    responseCode = "-1",
                    responseDesc = "ไม่พบข้อมูลไฟล์นำเข้า",
                }));
            }
            if (!PrivilegeID.HasValue || PrivilegeID == 0)
            {
                return(Json(new
                {
                    responseCode = "-1",
                    responseDesc = "ไม่พบข้อมูลสิทธิพิเศษ",
                }));
            }
            var pID = PrivilegeID;
            var pri = this._context.Privileges.Where(w => w.PrivilegeID == PrivilegeID).FirstOrDefault();

            if (pri == null)
            {
                return(Json(new
                {
                    responseCode = "-1",
                    responseDesc = "ไม่พบข้อมูลสิทธิพิเศษ",
                }));
            }

            var codelist = new List <PrivilegeCode>();

            using (var memoryStream = new MemoryStream())
            {
                await excelfile.CopyToAsync(memoryStream).ConfigureAwait(false);

                using (var package = new ExcelPackage(memoryStream))
                {
                    var workbook  = package.Workbook;
                    var worksheet = workbook.Worksheets.First();

                    var rowCount = worksheet.Dimension?.Rows;
                    var colCount = worksheet.Dimension?.Columns;
                    if (rowCount.HasValue && colCount.HasValue)
                    {
                        for (int row = 2; row <= rowCount.Value; row++)
                        {
                            try
                            {
                                var cformat = worksheet.Cells["C" + row].Style.Numberformat.Format;
                                var eformat = worksheet.Cells["D" + row].Style.Numberformat.Format;
                                worksheet.Cells["C" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm";
                                worksheet.Cells["D" + row].Style.Numberformat.Format = "dd/MM/yyyy HH:mm";

                                var code   = worksheet.Cells["A" + row].Value != null ? worksheet.Cells["A" + row].Value.ToString() : "";
                                var maxuse = worksheet.Cells["B" + row].Value != null ? worksheet.Cells["B" + row].Value.ToString() : "";
                                var eff    = worksheet.Cells["C" + row].Value != null ? worksheet.Cells["C" + row].Value : null;
                                var exp    = worksheet.Cells["D" + row].Value != null ? worksheet.Cells["D" + row].Value : null;
                                var status = worksheet.Cells["E" + row].Value != null ? worksheet.Cells["E" + row].Value.ToString() : "";


                                var pcode = new PrivilegeCode();
                                pcode.PrivilegeID = pri.PrivilegeID;
                                pcode.Code        = code;
                                pcode.MaxUse      = NumUtil.ParseInteger(maxuse);
                                if (pcode.MaxUse == 0)
                                {
                                    pcode.MaxUse = null;
                                }

                                if (!string.IsNullOrEmpty(cformat) && cformat[0].ToString().ToLower() == "m")
                                {
                                    pcode.EffectiveDate = (DateTime)eff;
                                }
                                else
                                {
                                    pcode.EffectiveDate = DateUtil.ToDate(eff.ToString());
                                }

                                if (!string.IsNullOrEmpty(eformat) && eformat[0].ToString().ToLower() == "m")
                                {
                                    pcode.ExpiryDate = (DateTime)exp;
                                }
                                else
                                {
                                    pcode.ExpiryDate = DateUtil.ToDate(exp.ToString());
                                }

                                if (eff != null)
                                {
                                    if (pcode.EffectiveDate == null)
                                    {
                                        pcode.EffectiveDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(eff));
                                    }
                                }
                                if (exp != null)
                                {
                                    if (pcode.ExpiryDate == null)
                                    {
                                        pcode.ExpiryDate = DateTime.FromOADate((double)NumUtil.ParseDecimal(exp));
                                    }
                                }
                                pcode.effDate = DateUtil.ToDisplayDate(pcode.EffectiveDate);
                                pcode.expDate = DateUtil.ToDisplayDate(pcode.ExpiryDate);
                                pcode.Status  = StatusType.InActive;
                                if (status == "Y")
                                {
                                    pcode.Status = StatusType.Active;
                                }
                                codelist.Add(pcode);
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                }
            }


            return(Json(new
            {
                responseCode = "1",
                responseDesc = "SUCCESS",
                data = codelist,
            }));
        }
        /// <summary>
        /// 判断权限代码是否在权限列表中
        /// </summary>
        /// <param name="privilegeList">权限列表</param>
        /// <param name="code">权限代码</param>
        /// <returns>bool</returns>
        /// <remarks>2013-8-19 杨浩 创建</remarks>
        public static bool HasPrivilege(this IList <SyPrivilege> privilegeList, PrivilegeCode code)
        {
            var hasAction = AdminAuthenticationBo.Instance.Current.PrivilegeList.Any(x => x.Code == code.ToString());

            return(hasAction);
        }