private TreePermission GetPermissionChildren(List <TreePermission> dataList, TreePermission item) { List <TreePermission> list = new List <TreePermission>(); for (int i = 0; i < dataList.Count; i++) { TreePermission childrenItem = dataList[i]; if (!string.IsNullOrEmpty(childrenItem.ParentCode) && item.Code == childrenItem.ParentCode) { childrenItem = GetPermissionChildren(dataList, childrenItem); list.Add(childrenItem); } } if (list.Count > 0) { item.expanded = true; item.leaf = false; } else { item.expanded = false; item.leaf = true; } item.children = list; return(item); }
/// <summary> /// 获得树形权限列表 /// </summary> public List <TreePermission> GetTreePermissions() { List <TreePermission> dataList = dal.GetPermissions() .Select(t => new TreePermission { Code = t.Code, Name = t.Name, ParentCode = t.ParentCode, Path = t.Path, SeqNo = t.SeqNo }).OrderBy(t => t.SeqNo).ToList(); List <TreePermission> list = new List <TreePermission>(); if (dataList.Count > 0) { for (int i = 0; i < dataList.Count; i++) { TreePermission item = dataList[i]; if (string.IsNullOrEmpty(item.ParentCode)) { item = GetPermissionChildren(dataList, item); list.Add(item); } } } return(list); }
public void CopyUserPermissions(CopyUserPermissions request) { if (request.Roles) { // vymazanie existujucich roli Db.Delete <UserRole>(e => e.D_User_Id == request.destUserId); // pridelenie novych roli podla sourceUsera //var sourceUserRoles = GetList<UserRole>(ur => ur.D_User_Id == request.sourceUserId); var sourceUserRoles = GetList(Db.From <UserRole>().Select(x => new { x.C_Role_Id, x.PlatnostOd }).Where(ur => ur.D_User_Id == request.sourceUserId)); foreach (var userRole in sourceUserRoles) { var newUserRole = new UserRole() { D_User_Id = request.destUserId, D_Tenant_Id = Session.TenantIdGuid.Value, C_Role_Id = userRole.C_Role_Id, Vytvoril = Session.UserIdGuid, PlatnostOd = userRole.PlatnostOd, DatumVytvorenia = DateTime.Now, Zmenil = Session.UserIdGuid, DatumZmeny = DateTime.Now, }; Db.Insert(newUserRole); } } if (request.Rights) { // vymazanie existujucich prav Db.Delete <RightPermission>(e => e.D_User_Id == request.destUserId); // pridelenie novych prav podla sourceUsera var sourceUserRights = GetList(Db.From <RightUserView>().Select(x => new { x.C_Right_Id }).Where(ur => ur.D_User_Id == request.sourceUserId && ur.HasRight)); foreach (var userRight in sourceUserRights) { if (userRight.C_Right_Id != 1) // SysAdmin sa nekopiruje { var newUserRight = new RightPermission() { D_User_Id = request.destUserId, D_Tenant_Id = Session.TenantIdGuid.Value, C_Right_Id = userRight.C_Right_Id, Vytvoril = Session.UserIdGuid, DatumVytvorenia = DateTime.Now, Zmenil = Session.UserIdGuid, DatumZmeny = DateTime.Now, }; Db.Insert(newUserRight); } } } if (request.TreePermissions) { // vymazanie existujucich prav Db.Delete <TreePermission>(e => e.D_User_Id == request.destUserId); // pridelenie novych prav podla sourceUsera var sourceUserTree = GetList(Db.From <TreePermissionView>().Select(x => new { x.Pravo, x.Kod, x.C_Modul_Id }).Where(ur => ur.D_User_Id == request.sourceUserId)); foreach (var userTree in sourceUserTree) { var newUserTree = new TreePermission() { D_User_Id = request.destUserId, D_Tenant_Id = Session.TenantIdGuid.Value, Pravo = userTree.Pravo, Kod = userTree.Kod, C_Modul_Id = userTree.C_Modul_Id, DatumVytvorenia = DateTime.Now, DatumZmeny = DateTime.Now, Vytvoril = Session.UserIdGuid, Zmenil = Session.UserIdGuid }; Db.Insert(newUserTree); } } if (request.ORSPermissions) { // vymazanie existujucich prav Db.Delete <OrsElementPermission>(e => e.D_User_Id == request.destUserId); Db.Delete <OrsElementTypePermission>(e => e.D_User_Id == request.destUserId); // pridelenie novych prav podla sourceUsera var sourceUserOrsEl = GetList(Db.From <OrsElementPermissionView>().Select(x => new { x.Pravo, x.C_OrsElement_Id }).Where(ur => ur.D_User_Id == request.sourceUserId)); foreach (var userOrsEl in sourceUserOrsEl) { var newUserOrsEl = new OrsElementPermission() { D_User_Id = request.destUserId, D_Tenant_Id = Session.TenantIdGuid.Value, Pravo = userOrsEl.Pravo, C_OrsElement_Id = userOrsEl.C_OrsElement_Id, DatumVytvorenia = DateTime.Now, DatumZmeny = DateTime.Now, Zmenil = Session.UserIdGuid, Vytvoril = Session.UserIdGuid }; Db.Insert(newUserOrsEl); } var sourceUserOrsType = GetList(Db.From <OrsElementTypePermissionView>().Select(x => new { x.Pravo, x.C_OrsElementType_Id }).Where(ur => ur.D_User_Id == request.sourceUserId)); foreach (var userOrsType in sourceUserOrsType) { var newUserOrsType = new OrsElementTypePermission() { D_User_Id = request.destUserId, D_Tenant_Id = Session.TenantIdGuid.Value, Pravo = userOrsType.Pravo, C_OrsElementType_Id = userOrsType.C_OrsElementType_Id, DatumVytvorenia = DateTime.Now, DatumZmeny = DateTime.Now, Zmenil = Session.UserIdGuid, Vytvoril = Session.UserIdGuid }; Db.Insert(newUserOrsType); } } }