Example #1
0
        public List <PermissionView.MenuView> QueryCompanyPermission(Guid company, Domain.PermissionType permissionType, Website website)
        {
            var result = new List <PermissionView.MenuView>();
            var sql    = "SELECT [Website],[MenuId],[MenuName],[SubMenuId],[SubMenuName] FROM dbo.V_CompanyPermission" +
                         " WHERE Company=@Company AND PermissionType=@PermissionType AND WebSite=@WebSite ORDER BY MenuSortLevel,MenuId,SubMenuSortLevel,SubMenuId";

            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("Company", company);
                dbOperator.AddParameter("PermissionType", (byte)permissionType);
                dbOperator.AddParameter("WebSite", (byte)website);
                PermissionView.MenuView menuView = null;
                using (var reader = dbOperator.ExecuteReader(sql)) {
                    while (reader.Read())
                    {
                        var currentMenuId = reader.GetGuid(1);
                        if (menuView == null || menuView.Id != currentMenuId)
                        {
                            menuView = new PermissionView.MenuView()
                            {
                                Id       = currentMenuId,
                                Name     = reader.GetString(2),
                                Children = new List <PermissionView.SubMenuView>()
                            };
                            result.Add(menuView);
                        }
                        menuView.Children.Add(new PermissionView.SubMenuView()
                        {
                            Id   = reader.GetGuid(3),
                            Name = reader.GetString(4)
                        });
                    }
                }
            }
            return(result);
        }
Example #2
0
        public void SaveCompanyPermission(Guid company, Website website, List <PermissionView.MenuView> menuViews, Domain.PermissionType permissionType)
        {
            var sql = new StringBuilder();

            sql.Append("DELETE FROM dbo.T_CompanyPermission WHERE Company=@Company AND [Type]=@PermissionType AND EXISTS(SELECT NULL FROM dbo.T_Menu WHERE Id=Menu AND Website=@Website);");
            if (menuViews != null)
            {
                var menusSql = new StringBuilder();
                foreach (var menu in menuViews)
                {
                    if (menu != null && menu.Children != null)
                    {
                        foreach (var subMenu in menu.Children)
                        {
                            if (subMenu != null)
                            {
                                menusSql.AppendFormat(" SELECT @Company,'{0}',@PermissionType UNION ALL", subMenu.Id);
                            }
                        }
                    }
                }
                if (menusSql.Length > 0)
                {
                    sql.Append("INSERT INTO dbo.T_CompanyPermission (Company,Menu,[Type])");
                    sql.Append(menusSql.ToString(), 0, menusSql.Length - 10);
                }
            }
            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("Company", company);
                dbOperator.AddParameter("PermissionType", (byte)permissionType);
                dbOperator.AddParameter("Website", (byte)website);
                dbOperator.ExecuteNonQuery(sql.ToString());
            }
        }
Example #3
0
        public IEnumerable <Domain.Menu> QueryCompanyPermitMenus(Guid company, Website website, Domain.PermissionType permissionType)
        {
            var sql = new StringBuilder();

            sql.Append("SELECT TMENU.Id AS MenuId,TMENU.Name AS MenuName,TMENU.Remark AS MenuRemark,TMENU.SortLevel AS MenuSortLevel,TMENU.Valid AS MenuValid,TMENU.Display as MenuDisplay,TSUBMENU.Display as SubMenuDisplay,");
            sql.Append("TSUBMENU.Id AS SubMenuId,TSUBMENU.Name AS SubMenuName,TSUBMENU.[Address] AS SubMenuAddress,TSUBMENU.Remark AS SubMenuRemark,");
            sql.Append("TSUBMENU.SortLevel AS SubMenuSortLevel,TSUBMENU.Valid AS SubMenuValid,");
            sql.Append("TRESOURCE.Id AS ResourceId,TRESOURCE.Name AS ResourceName,TRESOURCE.[Address] AS ResourceAddress,TRESOURCE.Remark AS ResourceRemark,TRESOURCE.Valid AS ResourceValid");
            sql.Append(" FROM dbo.T_CompanyPermission AS TCOMPANY");
            sql.Append(" INNER JOIN dbo.T_Menu TSUBMENU ON TCOMPANY.Company=@Company AND TCOMPANY.[Type]=@PermissionType AND TSUBMENU.Id=TCOMPANY.Menu AND TSUBMENU.Valid=1");
            sql.Append(" INNER JOIN dbo.T_Menu TMENU ON TMENU.Id=TSUBMENU.Parent AND TMENU.Valid=1 AND TMENU.Website=@Website");
            sql.Append(" LEFT JOIN dbo.T_Resource TRESOURCE ON TRESOURCE.Menu=TSUBMENU.Id AND TRESOURCE.Valid=1");
            sql.Append(" ORDER BY TMENU.SortLevel,TMENU.Id,TSUBMENU.SortLevel,TSUBMENU.Id");
            using (var dbOperator = new DbOperator(Provider, ConnectionString)) {
                dbOperator.AddParameter("Company", company);
                dbOperator.AddParameter("PermissionType", (byte)permissionType);
                dbOperator.AddParameter("Website", (byte)website);
                using (var reader = dbOperator.ExecuteReader(sql.ToString())) {
                    return(constructMenus(reader));
                }
            }
        }