private static AU.AUSchemaRole DoAction(AU.AdminUnit unit, UploadProgressStatus status, StringBuilder output, AU.AUSchemaRole currentRole, Dictionary<string, object> item) { string roleID, schemaRoleID, userID; int type; try { roleID = (string)item["RoleID"]; schemaRoleID = (string)item["SchemaRoleID"]; userID = (string)item["UserID"]; type = (int)item["Type"]; if (currentRole == null || currentRole.ID != roleID) currentRole = DbUtil.GetEffectiveObject<AU.AUSchemaRole>(schemaRoleID); status.StatusText = string.Format("正在向角色{0}{1}用户{2}", roleID, type == 0 ? "添加" : "删除", userID); output.AppendLine(status.StatusText); if (type == 0) { AU.Operations.Facade.InstanceWithPermissions.AddUserToRole(new PC.SCUser() { ID = userID }, unit, currentRole); } else { AU.Operations.Facade.InstanceWithPermissions.RemoveUserFromRole(new PC.SCUser() { ID = userID, CodeName = "abc", Name = "abc" }, unit, currentRole); } } catch (Exception ex) { status.StatusText = ex.Message; output.AppendLine(ex.ToString()); } return currentRole; }
private static void CopyRoleMembers(AU.AdminUnit fromUnit, bool copyRoleMembers, AU.AdminUnit newUnit, StepContext context) { if (copyRoleMembers) { var roles = AU.Adapters.AUSnapshotAdapter.Instance.LoadAURoles(new string[] { fromUnit.ID }, true, DateTime.MinValue); var schemaRoles = AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaRoles(fromUnit.AUSchemaID, true, DateTime.MinValue); double allCount = roles.Count; foreach (AU.AURole r in roles) { var schemaRole = schemaRoles[r.SchemaRoleID]; if (schemaRole == null) throw new AUObjectException(string.Format("未能找到对应角色{0}的管理架构角色{1}", r.ID, r.SchemaRoleID)); context.Logger.WriteLine(ProcessProgress.Current.StatusText = string.Format("正在设置管理单元角色 {0} 成员", schemaRole.Name)); ProcessProgress.Current.Response(); var targetRole = AU.Adapters.AUSnapshotAdapter.Instance.LoadAURole(r.SchemaRoleID, newUnit.ID, true, DateTime.MinValue); if (targetRole != null) { var usersIDs = AU.AUCommon.DoDbProcess(() => PC.Adapters.SCMemberRelationAdapter.Instance.LoadByContainerID(r.ID, "Users")).FilterByStatus(SchemaObjectStatusFilterTypes.Normal).ToIDArray(); var users = (from p in usersIDs select new PC.SCUser() { ID = p, Name = "Demo", CodeName = "Demo" }).ToArray(); AU.Operations.Facade.InstanceWithPermissions.ReplaceUsersInRole(users, newUnit, DbUtil.GetEffectiveObject<AU.AUSchemaRole>(targetRole.SchemaRoleID)); context.Logger.Write("已经添加{0}个人员\r\n", users.Length); } } } }
private static AU.AdminUnit CreateUnit(AU.AdminUnit fromUnit, string newName, string newCodeName) { AU.AdminUnit newUnit = new AU.AdminUnit(); foreach (var item in fromUnit.Properties) { if (newUnit.Properties.ContainsKey(item.Definition.Name) == false) newUnit.Properties.Add(new SchemaPropertyValue(item.Definition)); newUnit.Properties.SetValue<string>(item.Definition.Name, item.StringValue); var ppt = newUnit.Properties[item.Definition.Name]; if (ppt == null) throw new AUObjectException(string.Format("管理单元的属性:{0}不匹配", ppt.Definition.Name)); else ppt.StringValue = item.StringValue; } newUnit.ID = UuidHelper.NewUuidString(); newUnit.AUSchemaID = fromUnit.AUSchemaID; newUnit.Name = newName; newUnit.CodeName = newCodeName; return newUnit; }
private static void CopyMembers(bool copyMembers, AU.AUAdminScope item, AU.AUAdminScope targetScope, StepContext context) { if (copyMembers) { context.Logger.WriteLine(ProcessProgress.Current.StatusText = "正在复制管理范围固定成员"); ProcessProgress.Current.Response(); var memberIDs = AU.AUCommon.DoDbProcess(() => PC.Adapters.SCMemberRelationAdapter.Instance.LoadByContainerID(item.ID, item.ScopeSchemaType)).ToIDArray(); var actualMembers = AU.Adapters.AUSnapshotAdapter.Instance.LoadScopeItems(memberIDs, item.ScopeSchemaType, true, DateTime.MinValue); context.ResetInnerSteps(actualMembers.Count); foreach (AU.AUAdminScopeItem scopeItem in actualMembers) { context.Logger.WriteLine("正在添加" + scopeItem.AUScopeItemName); AU.Operations.Facade.InstanceWithPermissions.AddObjectToScope(scopeItem, targetScope); context.InnerStep++; context.Response(); } } }
private static void CopyConditions(bool copyScopeConditions, AU.AUAdminScope srcScope, AU.AUAdminScope targetScope, StepContext context) { if (copyScopeConditions) { context.Logger.WriteLine(ProcessProgress.Current.StatusText = "正在复制管理范围条件成员"); ProcessProgress.Current.Response(); var srcCondition = AU.Adapters.AUConditionAdapter.Instance.Load(srcScope.ID, AU.AUCommon.ConditionType).Where(m => m.Status == SchemaObjectStatus.Normal).FirstOrDefault(); if (srcCondition != null) { AU.Operations.Facade.InstanceWithPermissions.UpdateScopeCondition(targetScope, new PC.Conditions.SCCondition() { Condition = srcCondition.Condition, Description = srcCondition.Description, OwnerID = targetScope.ID, Type = AU.AUCommon.ConditionType, SortID = 0 }); } } }
private static void DoCopyUnit(StepContext context, AU.AdminUnit fromUnit, AU.AdminUnit targetParent, string newName, string newCodeName, bool copyRoleMembers, bool copyScopeMembers, bool copyScopeConditions) { AU.AdminUnit newUnit = CreateUnit(fromUnit, newName, newCodeName); int totalSteps = 1; if (copyRoleMembers) totalSteps++; if (copyScopeConditions) totalSteps++; if (copyScopeMembers) totalSteps++; context.TotalSteps = totalSteps; context.PassedSteps = 0; context.Div = 100.0 / totalSteps; ProcessProgress.Current.MinStep = 1; ProcessProgress.Current.CurrentStep = 1; ProcessProgress.Current.MaxStep = 100; context.Logger.WriteLine(ProcessProgress.Current.StatusText = "正在添加管理单元"); AU.Operations.Facade.InstanceWithPermissions.AddAdminUnit(newUnit, targetParent); context.ResetInnerSteps(); context.PassedSteps++; context.Response(); CopyRoleMembers(fromUnit, copyRoleMembers, newUnit, context); context.PassedSteps++; context.ResetInnerSteps(); context.Response(); if (copyScopeMembers || copyScopeConditions) { var srcScopes = fromUnit.GetNormalScopes(); var scopes = newUnit.GetNormalScopes(); if (copyScopeMembers) { foreach (AU.AUAdminScope srcScope in srcScopes) { var targetScope = scopes.GetScope(srcScope.ScopeSchemaType); if (targetScope != null) { CopyMembers(copyScopeMembers, srcScope, targetScope, context); } } context.PassedSteps++; context.ResetInnerSteps(); context.Response(); } if (copyScopeConditions) { foreach (AU.AUAdminScope srcScope in srcScopes) { var targetScope = scopes.GetScope(srcScope.ScopeSchemaType); if (targetScope != null) { CopyConditions(copyScopeConditions, srcScope, targetScope, context); context.PassedSteps++; context.ResetInnerSteps(); context.Response(); } } context.PassedSteps++; context.ResetInnerSteps(); } } }
private DeluxeTreeNode AddSchemaToTree(AU.AUSchema item, MCS.Web.WebControls.DeluxeTreeNodeCollection treeNodes) { DeluxeTreeNode node = new MCS.Web.WebControls.DeluxeTreeNode(item.Name, item.ID) { NodeOpenImg = ControlResources.OULogoUrl, NodeCloseImg = ControlResources.OULogoUrl, CssClass = "au-catenode", ChildNodesLoadingType = ChildNodesLoadingTypeDefine.Normal, ExtendedData = "Schema", Expanded = true }; treeNodes.Add(node); return node; }
private void AddUnitToTree(AU.AdminUnit item, MCS.Web.WebControls.DeluxeTreeNodeCollection treeNodes) { treeNodes.Add(new MCS.Web.WebControls.DeluxeTreeNode(item.Name, item.ID) { NodeOpenImg = ControlResources.OULogoUrl, NodeCloseImg = ControlResources.OULogoUrl, CssClass = "au-catenode", ChildNodesLoadingType = ChildNodesLoadingTypeDefine.LazyLoading, ExtendedData = "AU", SubNodesLoaded = false }); }