private void _createInventoryGroupPermission( int NodeTypeId, CswPrimaryKey RoleId, CswPrimaryKey InvGroupId, CswPrimaryKey WorkUnitId ) { CswNbtObjClassInventoryGroupPermission InvGrpPermNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.DoNothing ); InvGrpPermNode.IsDemo = true; InvGrpPermNode.InventoryGroup.RelatedNodeId = InvGroupId; InvGrpPermNode.Role.RelatedNodeId = RoleId; InvGrpPermNode.WorkUnit.RelatedNodeId = WorkUnitId; InvGrpPermNode.View.Checked = Tristate.True; InvGrpPermNode.Edit.Checked = Tristate.True; InvGrpPermNode.Dispense.Checked = Tristate.True; InvGrpPermNode.Request.Checked = Tristate.True; InvGrpPermNode.Dispose.Checked = Tristate.True; InvGrpPermNode.Undispose.Checked = Tristate.True; InvGrpPermNode.postChanges( false ); }
private void _createInventoryGroupPermission( CswNbtObjClassRole Role, Tristate Request, Tristate Receive ) { CswNbtMetaDataNodeType InventoryGroupPermissionNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Inventory Group Permission" ); if( InventoryGroupPermissionNT != null && InventoryGroupNode != null ) { CswNbtObjClassInventoryGroupPermission InvGrpPermNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( InventoryGroupPermissionNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode ); InvGrpPermNode.InventoryGroup.RelatedNodeId = InventoryGroupNode.NodeId; InvGrpPermNode.Role.RelatedNodeId = Role.NodeId; //WorkUnit? InvGrpPermNode.View.Checked = Tristate.True; InvGrpPermNode.Edit.Checked = CswConvert.ToTristate( Role.Name.Text != "CISPro_View_Only" ); InvGrpPermNode.Dispense.Checked = CswConvert.ToTristate( Role.Name.Text != "CISPro_View_Only" ); InvGrpPermNode.Request.Checked = Request; InvGrpPermNode.Dispose.Checked = CswConvert.ToTristate( Role.Name.Text != "CISPro_View_Only" ); InvGrpPermNode.Undispose.Checked = CswConvert.ToTristate( Role.Name.Text == "CISPro_Admin" ); //InvGrpPermNode.Receive.Checked = Receive; InvGrpPermNode.postChanges( false ); } }
public override void update() { #region NodeTypes CswNbtMetaDataNodeType ReportGroupPermNT = _createPermissionNT( CswEnumNbtObjectClass.ReportGroupPermissionClass, "Report Group Permission" ); CswNbtMetaDataNodeType MailReportGroupPermNT = _createPermissionNT( CswEnumNbtObjectClass.MailReportGroupPermissionClass, "Mail Report Group Permission" ); CswNbtMetaDataNodeType ReportGroupNT = _createGroupNT( CswEnumNbtObjectClass.ReportGroupClass, "Report Group", CswNbtObjClassReportGroup.PropertyName.Reports ); CswNbtMetaDataNodeType MailReportGroupNT = _createGroupNT( CswEnumNbtObjectClass.MailReportGroupClass, "Mail Report Group", CswNbtObjClassMailReportGroup.PropertyName.MailReports ); CswNbtMetaDataObjectClass InvGrpPermOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.InventoryGroupPermissionClass ); _CswNbtSchemaModTrnsctn.MetaData.makeMissingNodeTypeProps();//For some reason this is needed here or else the following code will throw an ORNI on a full master reset foreach( CswNbtMetaDataNodeType InvGrpPermNT in InvGrpPermOC.getNodeTypes() ) { _setPermissionPropFilters( InvGrpPermNT ); } #endregion NodeTypes #region Permission Group Nodes CswNbtObjClassReportGroup DefaultReportGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.MakeTemp ); DefaultReportGroup.Name.Text = "Default Report Group"; DefaultReportGroup.IsTemp = false; DefaultReportGroup.postChanges( false ); CswNbtMetaDataObjectClass ReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportClass ); foreach( CswNbtObjClassReport ReportNode in ReportOC.getNodes( false, false ) ) { ReportNode.ReportGroup.RelatedNodeId = DefaultReportGroup.NodeId; ReportNode.postChanges( false ); } CswNbtObjClassMailReportGroup DefaultMailReportGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.MakeTemp ); DefaultMailReportGroup.Name.Text = "Default Mail Report Group"; DefaultMailReportGroup.IsTemp = false; DefaultMailReportGroup.postChanges( false ); CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.MailReportClass ); foreach( CswNbtObjClassMailReport MailReportNode in MailReportOC.getNodes( false, false ) ) { MailReportNode.MailReportGroup.RelatedNodeId = DefaultMailReportGroup.NodeId; MailReportNode.postChanges( false ); } #endregion Permission Group Nodes #region Inventory Group Permission Nodes CswNbtMetaDataNodeType InventoryGroupNT = InvGrpPermOC.FirstNodeType; if( null != InventoryGroupNT ) { CswNbtMetaDataNodeTypeProp PermissionGroupNTP = InventoryGroupNT.getNodeTypePropByObjectClassProp( CswNbtPropertySetPermission.PropertyName.PermissionGroup ); if( null != PermissionGroupNTP ) { PermissionGroupNTP.PropName = CswNbtPropertySetPermission.PropertyName.PermissionGroup; } } foreach( CswNbtObjClassInventoryGroupPermission InvGrpPermNode in InvGrpPermOC.getNodes( false, false ) ) { InvGrpPermNode.ApplyToAllWorkUnits.Checked = CswEnumTristate.False; InvGrpPermNode.ApplyToAllRoles.Checked = CswEnumTristate.False; InvGrpPermNode.PermissionGroup.RefreshNodeName(); InvGrpPermNode.postChanges( false ); } CswNbtMetaDataObjectClass InvGrpOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.InventoryGroupClass ); foreach( CswNbtObjClassInventoryGroup InvGrpNode in InvGrpOC.getNodes( false, false ) ) { if( InvGrpNode.Name.Text == "Default Inventory Group" && null != InventoryGroupNT ) { CswNbtObjClassInventoryGroupPermission WildCardInventoryGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( InventoryGroupNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardInventoryGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.PermissionGroup.RelatedNodeId = InvGrpNode.NodeId; WildCardInventoryGroupPermission.View.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardInventoryGroupPermission.Dispense.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Dispose.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Request.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.Undispose.Checked = CswEnumTristate.False; WildCardInventoryGroupPermission.WorkUnit.RelatedNodeId = null; WildCardInventoryGroupPermission.WorkUnit.RefreshNodeName(); WildCardInventoryGroupPermission.WorkUnit.SyncGestalt(); WildCardInventoryGroupPermission.postChanges( false ); } } //This is now being handled as part of creating the Default Group nodes /*CswNbtObjClassReportGroupPermission WildCardReportGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( ReportGroupPermNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardReportGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardReportGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardReportGroupPermission.PermissionGroup.RelatedNodeId = DefaultReportGroup.NodeId; WildCardReportGroupPermission.View.Checked = CswEnumTristate.True; WildCardReportGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardReportGroupPermission.postChanges( false ); CswNbtObjClassMailReportGroupPermission WildCardMailReportGroupPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MailReportGroupPermNT.NodeTypeId, CswEnumNbtMakeNodeOperation.DoNothing ); WildCardMailReportGroupPermission.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.PermissionGroup.RelatedNodeId = DefaultMailReportGroup.NodeId; WildCardMailReportGroupPermission.View.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.Edit.Checked = CswEnumTristate.True; WildCardMailReportGroupPermission.postChanges( false );*/ #endregion Inventory Group Permission Nodes } // update()
public override void update() { CswNbtMetaDataObjectClass InventoryGroupOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupClass); CswNbtMetaDataObjectClass InventoryGroupPermissionOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupPermissionClass); CswNbtMetaDataNodeType InvGrpNT = InventoryGroupOc.FirstNodeType; CswNbtMetaDataNodeType InvGrpPermNT = InventoryGroupPermissionOc.FirstNodeType; //1: Get Default Inventory Group CswNbtObjClassInventoryGroup DefaultInventoryGroup = null; CswNbtObjClassInventoryGroup CISProInventoryGroup = null; foreach (CswNbtObjClassInventoryGroup InventoryGroup in InventoryGroupOc.getNodes(true, false, false, true)) { if (InventoryGroup.Name.Text == "Default Inventory Group") { DefaultInventoryGroup = InventoryGroup; } else if (InventoryGroup.Name.Text == "CISPro") { CISProInventoryGroup = InventoryGroup; } } if (null == DefaultInventoryGroup) { DefaultInventoryGroup = InventoryGroupOc.getNodes(true, false, false, true).FirstOrDefault(); } if (null == DefaultInventoryGroup) { if (null != InvGrpNT) { DefaultInventoryGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(InvGrpNT.NodeTypeId, delegate(CswNbtNode NewNode) { CswNbtObjClassInventoryGroup DefInvGrp = NewNode; DefInvGrp.Name.Text = "Default Inventory Group"; }); } } if (null != DefaultInventoryGroup) //At this point DefaultInventoryGroup should never be null { //2: Set Default Value to Default Inventory Group, if no DefaultValue is present CswNbtMetaDataObjectClass LocationOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass); foreach (CswNbtMetaDataNodeType LocationNt in LocationOc.getNodeTypes()) { CswNbtMetaDataNodeTypeProp InventoryGroupNtp = LocationNt.getNodeTypePropByObjectClassProp(CswNbtObjClassLocation.PropertyName.InventoryGroup); if (false == InventoryGroupNtp.HasDefaultValue()) { InventoryGroupNtp.DefaultValue.AsRelationship.RelatedNodeId = DefaultInventoryGroup.NodeId; } } //3: Update any null Inventory Group values with Default foreach (CswNbtObjClassLocation Location in LocationOc.getNodes(true, false, false, true)) { if (false == CswTools.IsPrimaryKey(Location.InventoryGroup.RelatedNodeId)) { Location.InventoryGroup.RelatedNodeId = DefaultInventoryGroup.NodeId; Location.postChanges(ForceUpdate: false); } } //4: Ensure at least one Inventory Group Permission exists CswNbtMetaDataNodeType IgPermNt = InventoryGroupPermissionOc.getLatestVersionNodeTypes().FirstOrDefault(); if (null != IgPermNt) { try { CswNbtObjClassInventoryGroupPermission DefaultPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(IgPermNt.NodeTypeId, delegate(CswNbtNode NewNode) { CswNbtObjClassInventoryGroupPermission WildCardPerm = NewNode; WildCardPerm.PermissionGroup.RelatedNodeId = DefaultInventoryGroup.NodeId; WildCardPerm.ApplyToAllRoles.Checked = CswEnumTristate.True; WildCardPerm.ApplyToAllWorkUnits.Checked = CswEnumTristate.True; WildCardPerm.Dispense.Checked = CswEnumTristate.True; WildCardPerm.Dispose.Checked = CswEnumTristate.True; WildCardPerm.Edit.Checked = CswEnumTristate.True; WildCardPerm.Request.Checked = CswEnumTristate.True; WildCardPerm.Undispose.Checked = CswEnumTristate.True; }); } catch (CswDniException ex) //If we're here, it's because this wildcard already exists { if (ex.ErrorType != CswEnumErrorType.Warning) { throw; } } } //5: Get rid of deprecated CISPro Inventory Group and move their permissions over to Default Inventory Group if (null != CISProInventoryGroup) { CswNbtMetaDataObjectClass WorkUnitOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.WorkUnitClass); CswNbtObjClassWorkUnit DefaultWorkUnit = null; foreach (CswNbtObjClassWorkUnit WorkUnit in WorkUnitOc.getNodes(true, false, false, true)) { if (WorkUnit.Name.Text == "Default Work Unit") { DefaultWorkUnit = WorkUnit; } } if (null != DefaultWorkUnit) { foreach (CswNbtObjClassInventoryGroupPermission InventoryGroupPerm in InventoryGroupPermissionOc.getNodes(true, false, false, true)) { if (InventoryGroupPerm.PermissionGroup.RelatedNodeId == CISProInventoryGroup.NodeId) { try { InventoryGroupPerm.PermissionGroup.RelatedNodeId = DefaultInventoryGroup.NodeId; InventoryGroupPerm.PermissionGroup.SyncGestalt(); InventoryGroupPerm.WorkUnit.RelatedNodeId = DefaultWorkUnit.NodeId; InventoryGroupPerm.WorkUnit.SyncGestalt(); InventoryGroupPerm.postChanges(false); } catch (CswDniException) //If we're here, it's because the Permission already exists on Default Inventory Group { InventoryGroupPerm.Node.delete(true, true); } } } } CISProInventoryGroup.Node.delete(true, true); } } //6: Fix Inventory Group Permissions grid prop if (null != InvGrpNT && null != InvGrpPermNT) { CswNbtMetaDataNodeTypeProp PermissionsNTP = InvGrpNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroup.PropertyName.Permissions); CswNbtView InvGrpPermView = _CswNbtSchemaModTrnsctn.restoreView(PermissionsNTP.ViewId); if (null == InvGrpPermView) { InvGrpPermView = _CswNbtSchemaModTrnsctn.makeSafeView("Permissions", CswEnumNbtViewVisibility.Property); InvGrpPermView.ViewMode = CswEnumNbtViewRenderingMode.Grid; } InvGrpPermView.Root.ChildRelationships.Clear(); CswNbtMetaDataNodeTypeProp PermissionGroupNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.PermissionGroup); CswNbtMetaDataNodeTypeProp RoleNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Role); CswNbtMetaDataNodeTypeProp WorkUnitNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.WorkUnit); CswNbtMetaDataNodeTypeProp ViewNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.View); CswNbtMetaDataNodeTypeProp EditNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Edit); CswNbtMetaDataNodeTypeProp DispenseNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Dispense); CswNbtMetaDataNodeTypeProp RequestNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Request); CswNbtViewRelationship RootRel = InvGrpPermView.AddViewRelationship(InvGrpNT, false); CswNbtViewRelationship PermRel = InvGrpPermView.AddViewRelationship(RootRel, CswEnumNbtViewPropOwnerType.Second, PermissionGroupNTP, true); InvGrpPermView.AddViewProperty(PermRel, PermissionGroupNTP, 1); InvGrpPermView.AddViewProperty(PermRel, RoleNTP, 2); InvGrpPermView.AddViewProperty(PermRel, WorkUnitNTP, 3); InvGrpPermView.AddViewProperty(PermRel, ViewNTP, 4); InvGrpPermView.AddViewProperty(PermRel, EditNTP, 5); InvGrpPermView.AddViewProperty(PermRel, DispenseNTP, 6); InvGrpPermView.AddViewProperty(PermRel, RequestNTP, 7); InvGrpPermView.save(); PermissionsNTP.ViewId = InvGrpPermView.ViewId; } }