private static DeltaSchemaObjectCollection GetDeltaObjects <T>(this IEnumerable <T> existed, IEnumerable <T> needToImported) where T : SchemaObjectBase { DeltaSchemaObjectCollection delta = new DeltaSchemaObjectCollection(); Dictionary <string, T> existedDict = existed.ToDictionaryByCodeName(); Dictionary <string, T> needToImportedDict = needToImported.ToDictionaryByCodeName(); needToImported.ForEach(obj => { string codeName = obj.Properties.GetValue("CodeName", string.Empty); if (existedDict.ContainsKey(codeName) == false) { delta.Inserted.Add(obj); } }); existed.ForEach(objExisted => { string codeName = objExisted.Properties.GetValue("CodeName", string.Empty); if (needToImportedDict.ContainsKey(codeName) == false) { delta.Deleted.Add(objExisted); } }); return(delta); }
/// <summary> /// 得到角色中权限的变化列表 /// </summary> /// <param name="app"></param> /// <param name="role"></param> /// <returns></returns> private static SCRoleAndDeltaGroup GetDeltaGroupsInRole(this SCRole role, IEnumerable <SCGroup> groupsInOrgs) { List <SCGroup> existedGroups = new List <SCGroup>(); role.CurrentMembers.ForEach(m => (m is SCGroup).TrueAction(() => existedGroups.Add((SCGroup)m))); DeltaSchemaObjectCollection delta = GetDeltaObjects(existedGroups, groupsInOrgs); return(new SCRoleAndDeltaGroup(role, delta)); }
/// <summary> /// 得到角色中权限的变化列表 /// </summary> /// <param name="app"></param> /// <param name="role"></param> /// <returns></returns> public static SCRoleAndDeltaPermission GetDeltaPermissionsInRole(this SCApplication app, SCRole role) { SCRole existedRole = app.CurrentRoles.Find(existed => AreEqual(existed, role)); DeltaSchemaObjectCollection delta = null; if (existedRole != null) { delta = GetDeltaObjects(existedRole.CurrentPermissions, role.CurrentPermissions); } else { delta = new DeltaSchemaObjectCollection(); existedRole = role; } return(new SCRoleAndDeltaPermission(existedRole, delta)); }
public static DeltaSchemaObjectCollection UpdateImportedPermissions(this SCApplication app, IEnumerable <SCPermission> permissionsNeedToImported, Action <RolesFunctionsImportContext> callerAction = null) { DeltaSchemaObjectCollection delta = app.GetDeltaPermissions(permissionsNeedToImported); ProcessProgress.Current.MaxStep += delta.TotalChanges; ProcessProgress.Current.Response(); foreach (SCPermission permission in delta.Inserted) { DoOperation(permission, string.Format("添加权限\"{0}\"", permission.CodeName), callerAction, () => SCObjectOperations.Instance.AddPermission((SCPermission)permission.CloneObject(), app)); } foreach (SCPermission permission in delta.Deleted) { DoOperation(permission, string.Format("删除权限\"{0}\"", permission.CodeName), callerAction, () => SCObjectOperations.Instance.DeletePermission((SCPermission)permission.CloneObject())); } return(delta); }
public static DeltaSchemaObjectCollection UpdateImportedRoles(this SCApplication app, IEnumerable <SCRole> rolesNeedToImported, Action <RolesFunctionsImportContext> callerAction = null) { DeltaSchemaObjectCollection delta = app.GetDeltaRoles(rolesNeedToImported); ProcessProgress.Current.MaxStep += delta.TotalChanges; ProcessProgress.Current.Response(); foreach (SCRole role in delta.Inserted) { DoOperation(role, string.Format("添加角色\"{0}\"", role.CodeName), callerAction, () => SCObjectOperations.Instance.AddRole((SCRole)role.CloneObject(), app)); } foreach (SCRole role in delta.Deleted) { DoOperation(role, string.Format("删除角色\"{0}\"", role.CodeName), callerAction, () => SCObjectOperations.Instance.DeleteRole((SCRole)role.CloneObject())); } return(delta); }