コード例 #1
0
ファイル: WebMenu.cs プロジェクト: huigll/HTBox
 public bool HasChildren(MenuTree menu)
 {
     using (var db = new WebPagesContext())
     {
         return db.MenuTrees.Where(o=>o.ParentId == menu.MenuId).Any();
     }
 }
コード例 #2
0
ファイル: MvcHtmlStringExten.cs プロジェクト: huigll/HTBox
        public static MvcHtmlString GetParentNavigation(this HtmlHelper helper, WebMenu menu)
        {
            if (menu == null || !menu.ParentId.HasValue) return null;
            StringBuilder sb = new StringBuilder();

            MenuTree parent;
            int menuId = menu.ParentId.Value;
            using (var db = new WebPagesContext())
            {
                do
                {
                    parent = db.MenuTrees.First(o => o.MenuId == menuId);
                    sb.Insert(0," > " + helper.ActionLink(parent.MenuName, "Search", new { ParentID = parent.MenuId }));
                    menuId = parent.ParentId??0;

                } while (parent.ParentId.HasValue);
            }
            sb.Insert(0, helper.ActionLink("Root", "Search").ToString());
            return MvcHtmlString.Create(sb.ToString());
        }
コード例 #3
0
            public SimpleMembershipInitializer()
            {
                Database.SetInitializer<WebPagesContext>(null);

                try
                {
                    using (var context = new WebPagesContext())
                    {
                        if (!context.Database.Exists())
                        {
                            // Create the SimpleMembership database without Entity Framework migration schema
                            ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                        }
                    }

                    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
                }
            }
コード例 #4
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 取得功能库中节点RootID下一层的数据集
        /// </summary>
        /// <param name="RootID">节点ID</param>
        /// <returns>节点RootID的下一层节点的数据集</returns>
        public static MenuTree[] GetOneFloorByRootID(int RootID,bool isPublic=false)
        {
            if (RootID < 0 && RootID != TreeRootID)//当节点值<0并且又不是主根节点时
                return null;
            using (var db = new WebPagesContext())
            {
                if (RootID != TreeRootID)
                    return db.MenuTrees.Where(o => o.ParentId == RootID && o.IsPublic == isPublic).OrderBy(o => o.OrderIndex).ToArray();

                var query=db.MenuTrees.Where(o => o.ParentId == null && o.IsPublic == isPublic).OrderBy(o => o.OrderIndex);
                var sql = query.ToString();
                return query.ToArray();
            }
        }
コード例 #5
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 取得节点menuid所有的父节点列表
        /// </summary>
        /// <param name="menuid">节点ID</param>
        /// <returns></returns>
        public static int[] GetParentNodeRoles(int menuid)
        {
            using (var db = new WebPagesContext())
            {
                List<int> parentList = new List<int>();

                int? parentNodeID = (from m in db.MenuTrees
                                where m.MenuId == menuid
                                    select m.ParentId).FirstOrDefault();
                if (parentNodeID == null) return parentList.ToArray();
                while (true)
                {
                    var parentNode = db.MenuTrees.Where(o => o.MenuId == parentNodeID).FirstOrDefault();
                    int ThisNodeID = parentNode.MenuId;

                    parentList.Add(ThisNodeID);
                    if (!parentNode.ParentId.HasValue)
                        break;
                    int ParentNodeID = parentNode.ParentId.Value;
                    if (ParentNodeID == TreeRootID)//到达了根节点
                        break;
                    else
                        parentNodeID = ParentNodeID;//继续循环
                }
                return parentList.ToArray();
            }
        }
コード例 #6
0
ファイル: AccountController.cs プロジェクト: huigll/HTBox
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (WebPagesContext db = new WebPagesContext())
                {
                    Webpages_UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        var newUser = new Webpages_UserProfile { UserName = model.UserName };
                        db.UserProfiles.Add(newUser);
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
                        WebSecurity.CreateAccount(model.UserName, null);
                        return RedirectToLocal(returnUrl);
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
コード例 #7
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        public static bool CheckThoseVuserContainThisGroup(int[] vuserIds, Webpages_VUser vuser)
        {
            if (vuserIds == null || vuserIds.Length == 0)
                return false;
            using (var db = new WebPagesContext())
            {

                if (vuser.Type == (int)VUserType.Group)
                {
                    foreach (int vuserid in vuserIds)
                    {
                        Webpages_VUser vu = db.Webpages_VUsers.FirstOrDefault(o => o.VUserId == vuserid);

                        if (vu.Type == (int)VUserType.Group)
                        {
                            if (IsGroupInGroup(vuser.Role.Code, vu.Role.Code))
                            {
                                return true;
                            }
                        }

                    }
                }
                else
                {
                    foreach (int vuserid in vuserIds)
                    {
                        Webpages_VUser vu = db.Webpages_VUsers.FirstOrDefault(o=>o.VUserId ==vuserid);

                        if (vu.Type == (int)VUserType.Group)
                        {
                            var user = vuser.User;
                            //if (user.IsUserInGroup(new ADGroup(vu.GroupId)))
                            if(Roles.IsUserInRole(user.UserName,vu.Role.RoleName))
                            {
                                return true;
                            }
                        }
                        else if (vu.UserID == vuser.UserID)
                            return true;
                    }

                }
                return false;
            }
        }
コード例 #8
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        private static void AddUserCannotViewPages(ref List<string> list, ref List<int> inIdlist, int rootID,
        string userId)
        {
            MenuTree[] nodes = MenuTreeCtrl.GetOneFloorByRootID(rootID);
            using (var db = new WebPagesContext())
            {
                if (nodes != null)
                {
                    foreach (MenuTree menu in nodes)
                    {
                        bool CanViewIt = false;

                        int[] groups = GetThisNodeVuserIdList(menu.MenuId);
                        if (groups != null)
                        {

                            foreach (int id in groups)
                            {
                                Webpages_VUser tmpv = db.Webpages_VUsers.FirstOrDefault(o=>o.VUserId == id);

                                if (tmpv.Type == (int)VUserType.Group)
                                {
                                    //ADUser user = new ADUser(userId);
                                    //if (user.IsUserInGroup(new ADGroup(tmpv.GroupId)))
                                    if(Roles.IsUserInRole(userId,tmpv.Role.RoleName))
                                    {
                                        CanViewIt = true;
                                        break;
                                    }
                                }
                                else
                                {

                                    if (string.Compare(tmpv.UserID.ToString(), userId, true) == 0)
                                    {
                                        CanViewIt = true;
                                        break;
                                    }
                                }
                            }
                        }
                        if (CanViewIt)
                        {//如果此节点可以被次用户浏览。
                            inIdlist.Add(menu.MenuId);
                            continue;//停止找自节点,继续找兄弟节点
                        }
                        else
                        {//此节点此用户不能浏览
                            string url = menu.PageUrl;

                            if (url != null && url.Length > 0)
                            {//添加不为空的页面
                                url = StringAnalyse.GetPagePurename(url);
                                if (!list.Contains(url))
                                    list.Add(url);
                            }
                            //寻找此节点的字节点
                            AddUserCannotViewPages(ref list, ref inIdlist, menu.MenuId, userId);
                        }
                    }

                }
            }
        }
コード例 #9
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
 public static Webpages_VUser CreateOrGetByGroupId(string groupCode)
 {
     using (var db = new WebPagesContext())
     {
         var vuser = db.Webpages_VUsers.FirstOrDefault(o => o.RoleID == groupCode);
         if (vuser != null)
             return vuser;
         vuser = new Webpages_VUser();
         vuser.RoleID = groupCode;
         vuser.Type = (int)VUserType.Group;
         db.Webpages_VUsers.Add(vuser);
         db.SaveChanges();
         return vuser;
     }
 }
コード例 #10
0
ファイル: FunctionAllocate.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 保存 存有节点ID和本节点更改后的角色列表  信息 的Hashtable到数据库
        /// </summary>
        /// <param name="hstbl">存有节点ID和本节点更改后的角色列表  信息 的Hashtable</param>
        private static void SaveHashTableInfo(List<MenuNodeInfo> hstbl)
        {
            if (hstbl == null)
                return;

            using (var db = new WebPagesContext())
            {
                var tra = db.Database.Connection.BeginTransaction();
                try
                {

                    foreach (MenuNodeInfo item in hstbl)
                    {
                        int menuid = item.Nodeid;

                        foreach (int vuserid in item.AddedVUserids)
                        {
                            var right = db.MenuTreeRights.Find(menuid ,vuserid);
                            if (right == null)
                            {
                                right = new MenuTreeRight();
                                right.MenuId = menuid;
                                right.VuserID = vuserid;
                                db.MenuTreeRights.Add(right);
                            }

                        }
                        if (item.RemovedVUserids != null)
                        {
                            StringBuilder strDeleteVuserids = new StringBuilder();
                            foreach (int vuserid in item.RemovedVUserids)
                            {
                                var menu = db.MenuTrees.Find(menuid, vuserid);
                                db.Entry(menu).State = System.Data.EntityState.Deleted;
                            }

                        }
                    }
                    db.SaveChanges();
                    tra.Commit();
                }
                catch
                {
                    tra.Rollback();
                    throw;
                }
                finally
                {
                    db.Dispose();
                }
            }
        }
コード例 #11
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        public static void GetUserMenuTree(ref TreeView treeview, string appVirtualPath,
            Webpages_VUser vuser, int rootID, bool chechBox, bool isAddUrl,
            bool isShowAllAndSelectOwner)
        {
            if (treeview == null)
                return;
            if (vuser == null)
            {
                GetPublicMenuTree(ref treeview, appVirtualPath, rootID, chechBox, isAddUrl, isShowAllAndSelectOwner);
                return;
            }
            MenuTree[] trees = GetOneFloorByRootID(rootID);
            using (var db = new WebPagesContext())
            {
                if (trees != null && trees.Length > 0)
                {
                    treeview.Target = _Target;
                    int i = 0;
                    bool IsAdmin = false;//管理员
                    Webpages_Roles group = db.WebPagesRoles.FirstOrDefault(o=>o.Code == AdminUserRoleCode);
                    if (group != null)
                    {
                        if (vuser.Type == (int)VUserType.User)
                        {
                            Webpages_UserProfile user = db.UserProfiles.FirstOrDefault(o=>o.UserId == vuser.UserID);

                            //if (user.IsUserInGroup(group))
                            if(Roles.IsUserInRole(user.UserName,group.RoleName))
                            {
                                IsAdmin = true;
                            }
                        }
                        else
                        {
                            Webpages_Roles vGroup = db.WebPagesRoles.FirstOrDefault(o => o.Code == vuser.RoleID);
                            if (IsGroupInGroup(vuser.Role.Code, group.Code))
                            {
                                IsAdmin = true;
                            }
                        }
                    }
                    if (IsAdmin)
                    {
                        foreach (MenuTree tree in trees)
                        {
                            if (!isShowAllAndSelectOwner && tree.IsHidden )
                                continue;

                            //创建存有必要信息的TReeNode
                            TreeNode node = newTreeNode(tree, appVirtualPath, chechBox, isAddUrl, false);

                            if (isShowAllAndSelectOwner)
                            {
                                //if (!IsParentChecked(node))
                                node.Checked = true;
                            }

                            treeview.Nodes.Add(node);
                            bool IsThisNodeContainShisUser = true;//管理员拥有所有
                            AddChildrenToNode(node, null,
                                tree.MenuId,
                                appVirtualPath,
                                ref IsThisNodeContainShisUser, chechBox, isAddUrl,
                                //isShowAllAndSelectOwner && !node.Checked);
                                  isShowAllAndSelectOwner, node.Checked);
                        }
                    }
                    else
                    {

                        bool IsThisNodeContainShisUser = false;
                        int[] parentRls = GetThisNodeAllViewRoles(rootID);
                        if (parentRls != null && parentRls.Length > 0)
                        {//判断父节点是否包含

                            if (CheckThoseVuserContainThisGroup(parentRls, vuser))
                            {
                                IsThisNodeContainShisUser = true;
                            }
                        }

                        foreach (MenuTree tree in trees)
                        {
                            bool tmpflag = IsThisNodeContainShisUser;
                            if (!isShowAllAndSelectOwner && tree.IsHidden)
                                continue;

                            //string Roles = row["OWNERGROUPCODE"].ToString();
                            int[] Roles = GetThisNodeAllViewRoles(tree.MenuId);
                            //此节点的角色列表中是不是包含此用户或者角色的标志
                            if (!tmpflag && Roles != null && Roles.Length > 0)
                            {
                                if (CheckThoseVuserContainThisGroup(Roles, vuser))
                                {
                                    tmpflag = true;
                                }

                            }
                            //创建存有必要信息的TReeNode
                            TreeNode node = newTreeNode(tree, appVirtualPath, chechBox, isAddUrl, false);

                            if (isShowAllAndSelectOwner && tmpflag)
                            {
                                //if (!IsParentChecked(node))
                                node.Checked = true;
                            }

                            treeview.Nodes.Add(node);
                            AddChildrenToNode(node, vuser.VUserId,
                                tree.MenuId,
                                appVirtualPath,
                                ref tmpflag, chechBox, isAddUrl,
                                //isShowAllAndSelectOwner && !node.Checked);
                                  isShowAllAndSelectOwner, node.Checked);

                            if (!tmpflag && !isShowAllAndSelectOwner)
                            {
                                treeview.Nodes[i].ChildNodes.Clear();
                                treeview.Nodes.RemoveAt(i);
                            }
                            else
                                i++;

                        }
                    }
                }
            }
        }
コード例 #12
0
ファイル: FunctionAllocate.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 判断两个Vuser角色的关系
        /// </summary>
        /// <param name="CodeA">角色1</param>
        /// <param name="CodeB">角色2</param>
        /// <returns></returns>
        public static GpCodeRelation GetTwoRelaction(int CodeA, int CodeB)
        {
            if (CodeA == 0 || CodeB == 0)
                return GpCodeRelation.Error;
            if (CodeA == CodeB)
                return GpCodeRelation.Equality;
            using (var db = new WebPagesContext())
            {
                var a = db.Webpages_VUsers.Find(CodeA);
                var b = db.Webpages_VUsers.Find(CodeB);
                if (a== null)
                    return GpCodeRelation.Error;
                if (b == null)
                    return GpCodeRelation.Error;

                if (a.Type == (int)VUserType.User && b.Type ==(int) VUserType.User)//两个全是用户,那么可能是相等或者相离
                {
                    if (a.UserID ==  b.UserID)
                        return GpCodeRelation.Equality;
                    else
                        return GpCodeRelation.Separate;
                }
                else if (a.Type == (int)VUserType.User && b.Type == (int)VUserType.Group)//A是用户,B是机构,可能是A被B包含或者相离
                {
                    var u = a.User;
                    var g = b.Role;
                    if (System.Web.Security.Roles.IsUserInRole(u.UserName,g.RoleName))
                        return GpCodeRelation.Bycontain;
                    else
                        return GpCodeRelation.Separate;

                }
                else if (a.Type == (int)VUserType.Group && b.Type == (int)VUserType.Group)
                {

                    if (MenuTreeCtrl.IsGroupInGroup(a.Role.Code, b.Role.Code))
                        return GpCodeRelation.Bycontain;
                    else if (MenuTreeCtrl.IsGroupInGroup(b.Role.Code, a.Role.Code))
                        return GpCodeRelation.Contain;
                    else
                        return GpCodeRelation.Separate;

                }
                else if (a.Type ==(int) VUserType.Group && b.Type == (int)VUserType.User)
                {
                    var u = b.User;
                    var g = a.Role;
                    if (System.Web.Security.Roles.IsUserInRole(u.UserName,g.RoleName))
                        return GpCodeRelation.Contain;
                    else
                        return GpCodeRelation.Separate;

                }
                return GpCodeRelation.Error;
            }
        }
コード例 #13
0
ファイル: FunctionAllocate.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 取得大角色BigCode除去小角色smallCode的角色列表,以;分割
        /// (不管俩个相差多少级)
        /// </summary>
        /// <param name="BigCode">角色代码(如:1-1-1)</param>
        /// <param name="smallCode">属于BigCode的小角色代码(如:1-1-1-1)</param>
        /// <returns>角色BigCode除去smallCode的角色列表</returns>
        private static int[] GetRoleExceptThisRole(int BigCode, int smallCode)
        {
            using (var db = new WebPagesContext())
            {
                Webpages_VUser bigGroup = db.Webpages_VUsers.Find(BigCode);
                if (bigGroup == null)
                    throw new DataException("VuserId:" + BigCode);

                if (bigGroup.Type ==(int) VUserType.User)
                    return new int[0];

                var smGroup = db.Webpages_VUsers.Find(smallCode);
                if (smGroup == null)
                    throw new DataException("VuserId:" + smallCode);

                var group = bigGroup.Role;
                var list = group.GetOneFloorGroups(db);//取得角色BigCode的下一层子角色
                List<int> AllChildrenCode = new List<int>();
                if (list != null && list.Length > 0)
                {

                    foreach (var role in list)
                    {

                        var tmp = Webpages_VUser.CreateOrGetByGroupId(role.Code);

                        GpCodeRelation Rel = GetTwoRelaction(tmp.VUserId, smallCode);
                        if (Rel == GpCodeRelation.Equality)
                            continue;//如果相等,跳过
                        else if (Rel == GpCodeRelation.Separate)//如果相离
                            AllChildrenCode.Add(tmp.VUserId);//保存
                        else if (Rel == GpCodeRelation.Contain)//如果还包含
                        {
                            //递归取得下一层
                            int[] rst = GetRoleExceptThisRole(tmp.VUserId, smallCode);
                            if (rst != null)
                                AllChildrenCode.AddRange(rst);
                        }

                    }

                }
                var users =  group.GetUsers(false);
                if (users != null && users.Length > 0)
                {
                    foreach (var user in users)
                    {

                        var tmp = Webpages_VUser.CreateOrGetByUserId(user.UserId);

                        GpCodeRelation Rel = GetTwoRelaction(tmp.VUserId, smallCode);
                        if (Rel == GpCodeRelation.Equality)
                            continue;//如果相等,跳过
                        else if (Rel == GpCodeRelation.Separate)//如果相离
                            AllChildrenCode.Add(tmp.VUserId);//保存
                        //用户不可能包含其他的用户或者机构

                    }
                }
                return AllChildrenCode.ToArray();
            }
        }
コード例 #14
0
        public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
        {
            if (config == null) throw new ArgumentNullException("config");
            if (string.IsNullOrEmpty(name)) name = DEFAULT_NAME;
            base.Initialize(name, config);

            var providerName = config[DEFAULT_PROVIDER_CONFIG_NAME];
            if (!string.IsNullOrEmpty(providerName))
                this.preProvider = Roles.Providers[providerName] ?? Roles.Providers[DEFAULT_PROVIDER_NAME];

            this.dbContext = new WebPagesContext();
        }
コード例 #15
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
 public static Webpages_VUser Find(int vuserid)
 {
     using (var db = new WebPagesContext())
     {
         return db.Webpages_VUsers.FirstOrDefault(o => o.VUserId == vuserid);
     }
 }
コード例 #16
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
 public static Webpages_VUser CreateOrGetByUserId(int userid)
 {
     using (var db = new WebPagesContext())
     {
         var vuser = db.Webpages_VUsers.FirstOrDefault(o => o.UserID == userid);
         if (vuser != null)
             return vuser;
         if (db.UserProfiles.Find(userid) == null)
             return null;
         vuser = new Webpages_VUser();
         vuser.UserID = userid;
         vuser.Type = (int)VUserType.User;
         db.Webpages_VUsers.Add(vuser);
         db.SaveChanges();
         return vuser;
     }
 }
コード例 #17
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 取得节点menuid的某一列
        /// </summary>
        /// <param name="menuid">节点ID</param>
        /// <param name="columnName"></param>
        /// <returns>节点menuid的角色列表</returns>
        public static string GetThisNodePageUrl(int menuid)
        {
            using (var db = new WebPagesContext())
            {

                return db.MenuTrees.Where(o => o.MenuId == menuid).Select(o => o.PageUrl).FirstOrDefault();
            }
        }
コード例 #18
0
        public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
        {
            if (config == null) throw new ArgumentNullException("config");
            if (string.IsNullOrEmpty(name)) name = DEFAULT_NAME;
            base.Initialize(name, config);

            var providerName = config[DEFAULT_PROVIDER_CONFIG_NAME];
            if (!string.IsNullOrEmpty(providerName))
                this.preProvider = Membership.Providers[providerName] ?? Membership.Providers[DEFAULT_PROVIDER_NAME];
            if (this.preProvider != null)
                this.preProvider.ValidatingPassword += delegate(object sender, ValidatePasswordEventArgs args)
                {
                    this.OnValidatingPassword(args);
                };

            this.dbContext = new WebPagesContext();
            this.userProfiles = this.dbContext.UserProfiles;
            this.oAuthMemberships = this.dbContext.WebPagesOAuthMembership;
            this.roles = this.dbContext.WebPagesRoles;
            this.usersInRoles = this.dbContext.WebPagesUsersInRoles;
            this.memberships = this.dbContext.WebPagesMembership;
        }
コード例 #19
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 取得节点menuid的角色列表
        /// </summary>
        /// <param name="menuid">节点ID</param>
        /// <returns>节点menuid的角色列表</returns>
        public static int[] GetThisNodeVuserIdList(int menuid)
        {
            using (var db = new WebPagesContext())
            {

                return (from n in db.MenuTrees
                         from r in db.MenuTreeRights
                         where n.MenuId == r.MenuId && n.MenuId == menuid
                         select r.VuserID).ToArray();
            }
        }
コード例 #20
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
        public Webpages_Roles[] GetOneFloorGroups(WebPagesContext db=null)
        {
            bool flag = db == null;
            try
            {
                if (flag) db = new WebPagesContext();
                string[] tmp = this.Code.Split('-');
                int TreeDeep = tmp.Length;
                int type = Convert.ToInt32(tmp[0]);

                return (from m in db.WebPagesRoles
                            where m.Deep == TreeDeep &&
                            m.Type == type &&
                            m.Code.IndexOf(this.Code + "-") == 0
                            orderby m.IndexOrder
                            select m).ToArray();

            }
            finally
            {
                if (flag)
                    db.Dispose();
            }
        }
コード例 #21
0
ファイル: MenuTreeCtrl.cs プロジェクト: huigll/HTBox
        /// <summary>
        /// 检查节点RootID是不是有子节点 
        /// </summary>
        /// <param name="RootID"></param>
        /// <returns></returns>
        public static bool IsThisNodeHaveChildren(int RootID)
        {
            //MenuTree.TblQuery stu = new MenuTree.TblQuery(ConfigInfo.DataServerType);
            //stu.PARENTID = RootID;
            //MenuTree menu = new MenuTree(ConfigInfo.DataServerType);
            //object obj = menu.ControlHelper.GetOneFieldBy("count(*)", stu, ConfigInfo.ConnectionString);
            //return obj != null && obj != DBNull.Value && Convert.ToInt32(obj) > 0;

            using (var db = new WebPagesContext())
            {
                return db.MenuTrees.Any(o => o.ParentId == RootID);
            }
        }
コード例 #22
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
        public Webpages_Roles GetSubRoleByName(string roleName, WebPagesContext db = null)
        {
            bool flag = db == null;
            try
            {
                if (flag) db = new WebPagesContext();
                string[] tmp = this.Code.Split('-');
                int TreeDeep = tmp.Length;
                int type = Convert.ToInt32(tmp[0]);

                return (from m in db.WebPagesRoles
                        where m.RoleName == roleName &&  m.Deep == TreeDeep &&
                        m.Type == type &&
                        m.Code.IndexOf(this.Code + "-") == 0
                        orderby m.IndexOrder
                        select m).FirstOrDefault();
            }
            finally
            {
                if (flag)
                    db.Dispose();
            }
        }
コード例 #23
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
        public static Webpages_Roles GetOrCreateRoot(int type=1,string rootName="Root",WebPagesContext db=null)
        {
            bool flag = db == null;
            try
            {
                string code = type.ToString();
                if (flag) db = new WebPagesContext();
                var root = db.WebPagesRoles.Where(o => o.Type == type && o.RoleName == rootName &&
                    o.Deep == 0 && o.Code == code).FirstOrDefault();
                if (root == null)
                {
                    root = new Webpages_Roles()
                    {
                        Type = type,
                        RoleName = rootName,
                        Deep = 0,
                        Code = type.ToString(),
                    };
                    db.WebPagesRoles.Add(root);
                    db.SaveChanges();
                }
                return root;

            }
            finally
            {
                if (flag)
                    db.Dispose();
            }
        }
コード例 #24
0
ファイル: DataTables.cs プロジェクト: huigll/HTBox
        public Webpages_UserProfile[] GetUsers(bool isWhole, WebPagesContext db = null)
        {
            bool flag = db == null;
            try
            {
                if (flag) db = new WebPagesContext();
                string[] tmp = this.Code.Split('-');
                int TreeDeep = tmp.Length;
                int type = Convert.ToInt32(tmp[0]);
                IQueryable<Webpages_Roles> allRoles;
                if (isWhole)
                {
                    allRoles = from g in db.WebPagesRoles
                               where g.Code == Code ||
                               g.Code.IndexOf(Code + "-") == 0

                               select g;
                }
                else
                {
                    allRoles = from g in db.WebPagesRoles
                               where g.Code == Code select g;
                }
                var allUser = (from u in db.UserProfiles
                               from map in db.WebPagesUsersInRoles
                               from al in allRoles
                               where u.UserId == map.UserId &&
                               map.RoleCode == al.Code
                               orderby u.IndexOrder
                               select u).ToArray();
                return allUser;

            }
            finally
            {
                if (flag)
                    db.Dispose();
            }
        }