public override void CommitOperation(ref OperationData OpData) { CswNbtNode itemToMove = _CswNbtResources.Nodes[OpData.Field2.NodeId]; CswNbtMetaDataNodeType thisNT = itemToMove.getNodeType(); string itemType = thisNT.NodeTypeName; if (_CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, itemToMove.getNodeType()) && false == thisNT.getLocationProperty().ReadOnly) { ICswNbtKioskModeMoveable AsMoveable = (ICswNbtKioskModeMoveable)itemToMove.ObjClass; string specificStatusError = string.Empty; if (AsMoveable.CanMove(out specificStatusError)) { CswNbtObjClassLocation locationToMoveTo = _CswNbtResources.Nodes[OpData.Field1.NodeId]; AsMoveable.Move(locationToMoveTo); itemToMove.postChanges(false); OpData.Log.Add(DateTime.Now + " - Moved " + itemType + " " + OpData.Field2.Value + " to " + locationToMoveTo.Location.Gestalt + " > " + locationToMoveTo.Name.Text + " (" + OpData.Field1.Value + ")"); base.CommitOperation(ref OpData); } else { OpData.Field2.FoundObjClass = string.Empty; OpData.Field2.StatusMsg = specificStatusError; OpData.Field2.ServerValidated = false; OpData.Log.Add(DateTime.Now + " - ERROR: " + specificStatusError); } } else { string statusMsg = "You do not have permission to edit " + itemType + " (" + OpData.Field2.Value + ")"; OpData.Field2.FoundObjClass = string.Empty; OpData.Field2.StatusMsg = statusMsg; OpData.Field2.ServerValidated = false; OpData.Log.Add(DateTime.Now + " - ERROR: " + statusMsg); } }
public override void CommitOperation(ref OperationData OpData) { bool succeeded = false; string statusMsg = null; CswNbtObjClassUser newTransferOwner = _getNodeByBarcode(CswEnumNbtObjectClass.UserClass, OpData.Field1.Value, true); CswNbtNode node = _CswNbtResources.Nodes[OpData.Field2.NodeId]; CswNbtMetaDataNodeType NodeType = node.getNodeType(); string itemName = NodeType.NodeTypeName; ICswNbtKioskModeTransferable AsTransferable = (ICswNbtKioskModeTransferable)node.ObjClass; if (AsTransferable.CanTransfer(out statusMsg)) { AsTransferable.Transfer(newTransferOwner); succeeded = true; } if (null != node && succeeded) { node.postChanges(false); CswNbtObjClassLocation newLocationNode = _CswNbtResources.Nodes[newTransferOwner.DefaultLocationId]; OpData.Log.Add(DateTime.Now + " - Transferred " + itemName + " " + OpData.Field2.Value + " ownership to " + newTransferOwner.Username + " (" + OpData.Field1.Value + ") at " + newLocationNode.Name.Text); base.CommitOperation(ref OpData); } else { statusMsg = statusMsg ?? "You do not have permission to edit " + itemName + " (" + OpData.Field2.Value + ")"; OpData.Field2.StatusMsg = statusMsg; OpData.Field2.ServerValidated = false; OpData.Log.Add(DateTime.Now + " - ERROR: " + statusMsg); } }
/// <summary> /// Instance a new EnterprisePart Request Item /// </summary> public CswNbtObjClassRequestItem makeEnterprisePartRequestItem(CswNbtObjClassEnterprisePart EnterprisePart, CswNbtObjClass.NbtButtonData ButtonData) { checkForCentralInventoryGroups(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = null; CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault(); CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); if (null != RequestItemNT) { RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode) { CswNbtObjClassRequestItem RequestItemNode = NewNode; RequestItemNode.EnterprisePart.RelatedNodeId = EnterprisePart.NodeId; RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.EnterprisePart; if (null != _ThisUser.DefaultLocationId) { CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId); if (null != DefaultAsLocation) { RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId; RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName; RequestItemNode.Location.CachedPath = DefaultAsLocation.Location.CachedPath; } } }); } return(RequestItem); }
public static CswNbtView LocationPropertyView(CswNbtResources CswNbtResources, CswNbtMetaDataNodeTypeProp Prop, CswPrimaryKey NodeId = null, IEnumerable <CswPrimaryKey> InventoryGroupIds = null, CswEnumNbtFilterResultMode ResultMode = null, string FullPathFilter = "") { CswNbtMetaDataObjectClass ContainerOC = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass); CswNbtMetaDataObjectClass UserOC = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.UserClass); CswNbtMetaDataObjectClass RequestItemOC = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); //TODO (Case 31016): This is pretty hack-a-delic - we should convert these into prop attributes (like RespectAllowInventory, DisableLowestLevel, and IncludeRoot) bool IsLocationNode = (null != Prop && Prop.getNodeType().getObjectClass().ObjectClass == CswEnumNbtObjectClass.LocationClass); bool IsContainerNode = (null != Prop && null != ContainerOC && Prop.getNodeType().ObjectClassId == ContainerOC.ObjectClassId); bool IsUserNode = (null != Prop && null != UserOC && Prop.getNodeType().ObjectClassId == UserOC.ObjectClassId); bool IsRequestItemNode = (null != Prop && null != RequestItemOC && Prop.getNodeType().ObjectClassId == RequestItemOC.ObjectClassId); CswNbtView Ret = new CswNbtView(CswNbtResources); Ret.ViewName = GetTopLevelName(CswNbtResources); Ret.Root.Included = IsLocationNode; CswNbtObjClassLocation.makeLocationsTreeView(ref Ret, CswNbtResources, NodeIdToFilterOut: NodeId, RequireAllowInventory: (CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.Containers) && (IsContainerNode || IsUserNode || IsRequestItemNode)), InventoryGroupIds: InventoryGroupIds, DisableLowestLevel: IsLocationNode, ResultMode: ResultMode, FullPathFilter: FullPathFilter); return(Ret); }
public static void getLocationTree(ICswResources CswResources, Contract.Response Response, object Request) { CswNbtResources Resources = (CswNbtResources)CswResources; CswNbtView View = new CswNbtView(Resources); CswNbtObjClassLocation.makeLocationsTreeView(ref View, Resources); View.SaveToCache(false, false); Response.Data.ViewId = View.SessionViewId; } //getLocationTree()
public override void update() { // Update existing 'Locations' view for Order change { CswNbtView LocationsView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( "Locations", NbtViewVisibility.Global ); if( null != LocationsView ) { CswNbtObjClassLocation.makeLocationsTreeView( ref LocationsView, _CswNbtSchemaModTrnsctn ); LocationsView.save(); } } // Also fix the Equipment by Location view { CswNbtView EquipByLocView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( "Equipment By Location", NbtViewVisibility.Global ); if( null != EquipByLocView ) { CswNbtObjClassLocation.makeLocationsTreeView( ref EquipByLocView, _CswNbtSchemaModTrnsctn ); CswNbtMetaDataObjectClass EquipmentOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.EquipmentClass ); CswNbtMetaDataNodeType EquipmentNT = EquipmentOC.FirstNodeType; CswNbtMetaDataNodeTypeProp EquipmentLocationNTP = null; if( null != EquipmentNT ) { EquipmentLocationNTP = EquipmentNT.getNodeTypeProp( "Location" ); } CswNbtMetaDataObjectClass AssemblyOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.EquipmentAssemblyClass ); CswNbtMetaDataNodeType AssemblyNT = AssemblyOC.FirstNodeType; CswNbtMetaDataNodeTypeProp AssemblyLocationNTP = null; if( null != AssemblyNT ) { AssemblyLocationNTP = AssemblyNT.getNodeTypeProp( "Location" ); } foreach( CswNbtViewRelationship LocRel in EquipByLocView.Root.GetAllChildrenOfType( NbtViewNodeType.CswNbtViewRelationship ) ) { if( null != EquipmentLocationNTP ) { EquipByLocView.AddViewRelationship( LocRel, NbtViewPropOwnerType.Second, EquipmentLocationNTP, true ); } if( null != AssemblyLocationNTP ) { EquipByLocView.AddViewRelationship( LocRel, NbtViewPropOwnerType.Second, AssemblyLocationNTP, true ); } } EquipByLocView.save(); } } } //Update()
private string _generateLocationPath(CswNbtObjClassLocation NodeAsLocation) { string ret; ret = NodeAsLocation.NodeName; if (NodeAsLocation.Location.SelectedNodeId != null) { string prev = _generateLocationPath(_CswNbtResources.Nodes[NodeAsLocation.Location.SelectedNodeId]); if (prev != string.Empty) { ret = prev + PathDelimiter + ret; } } return(ret); }
private ContainerData.UnscannedLocation _makeUnscannedLocation(CswPrimaryKey LocationId) { ContainerData.UnscannedLocation UnscannedLocation = new ContainerData.UnscannedLocation(); CswNbtObjClassLocation LocationNode = _CswNbtResources.Nodes[LocationId]; if (null != LocationNode) { UnscannedLocation.LocationId = LocationId.ToString(); UnscannedLocation.Name = LocationNode.Name.Text; UnscannedLocation.Path = LocationNode.Location.CachedFullPath; UnscannedLocation.Link = LocationNode.Node.NodeLink; UnscannedLocation.AllowInventory = CswConvert.ToBoolean(LocationNode.AllowInventory.Checked); } return(UnscannedLocation); }
public override void update() { // Fix bugs introduced in Othello's CswUpdateSchemaCase25981.cs // Remove erroneous extra value string Sql = @"delete from jct_nodes_props where jctnodepropid in (select j.jctnodepropid from jct_nodes_props j join nodetype_props p on j.nodetypepropid = p.nodetypepropid join nodes n on j.nodeid = n.nodeid join nodetypes t1 on p.nodetypeid = t1.nodetypeid join nodetypes t2 on n.nodetypeid = t2.nodetypeid where t1.nodetypeid <> t2.nodetypeid)"; _CswNbtSchemaModTrnsctn.execArbitraryPlatformNeutralSql( Sql ); // Set up Lab 2 correctly CswNbtMetaDataObjectClass LocationOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.LocationClass ); Collection<CswNbtNode> LocationNodes = LocationOC.getNodes( false, true ); CswNbtObjClassLocation LocationNRL = null; foreach( CswNbtObjClassLocation LocationNode in LocationNodes ) { if( LocationNode.Name.Text == "North Research Lab" ) { LocationNRL = LocationNode; } } // foreach( CswNbtObjClassLocation LocationNode in LocationNodes ) if( LocationNRL != null ) { foreach( CswNbtObjClassLocation LocationNode in LocationNodes ) { if( LocationNode.Name.Text == string.Empty && LocationNode.IsDemo ) { LocationNode.Name.Text = "Lab 2"; LocationNode.Location.SelectedNodeId = LocationNRL.NodeId; LocationNode.postChanges( true ); } } // foreach( CswNbtObjClassLocation LocationNode in LocationNodes ) } // if( LocationNRL != null ) }//Update()
private Collection <String> _getActionOptions(String Status, CswPrimaryKey ScannedLocationId) { Collection <String> ActionOptions = new Collection <String>(); ActionOptions.Add(String.Empty); if (Status != CswEnumNbtContainerLocationStatusOptions.Correct.ToString() && Status != CswEnumNbtContainerLocationStatusOptions.ScannedCorrect.ToString()) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.Ignore.ToString()); } if (Status == CswEnumNbtContainerLocationStatusOptions.NotScanned.ToString()) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.MarkMissing.ToString()); } if (Status == CswEnumNbtContainerLocationStatusOptions.Disposed.ToString() || Status == CswEnumNbtContainerLocationStatusOptions.DisposedAtWrongLocation.ToString()) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.Undispose.ToString()); } if (Status == CswEnumNbtContainerLocationStatusOptions.WrongLocation.ToString() || Status == CswEnumNbtContainerLocationStatusOptions.DisposedAtWrongLocation.ToString()) { bool CanMove = true; CswNbtObjClassLocation ScannedLocation = _CswNbtResources.Nodes[ScannedLocationId]; if (null != ScannedLocation && ScannedLocation.AllowInventory.Checked != CswEnumTristate.True) { CanMove = false; } if (CanMove) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.MoveToLocation.ToString()); } } if (Status == CswEnumNbtContainerLocationStatusOptions.DisposedAtWrongLocation.ToString()) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.UndisposeAndMove.ToString()); } if (Status == CswEnumNbtContainerLocationStatusOptions.Missing.ToString()) { ActionOptions.Add(CswEnumNbtContainerLocationActionOptions.UnmarkMissing.ToString()); } return(ActionOptions); }
internal CswNbtNode createLocationNode(String LocationType = "Room", String Name = "New Room", CswPrimaryKey ParentLocationId = null, CswPrimaryKey ControlZoneId = null, bool AllowInventory = true) { CswNbtNode ret = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(_getNodeTypeId(LocationType), delegate(CswNbtNode NewNode) { CswNbtObjClassLocation LocationNode = NewNode; LocationNode.Name.Text = Name; if (ParentLocationId != null) { LocationNode.Location.SelectedNodeId = ParentLocationId; LocationNode.Location.RefreshNodeName(); } if (ControlZoneId != null) { LocationNode.ControlZone.RelatedNodeId = ControlZoneId; } LocationNode.AllowInventory.Checked = AllowInventory ? CswEnumTristate.True : CswEnumTristate.False; }, OverrideUniqueValidation: true); _finalize(); return(ret); }
public void RefreshNodeName() { string topLevelName = CswNbtNodePropLocation.GetTopLevelName(_CswNbtResources); CachedNodeName = topLevelName; CachedPath = topLevelName; CachedBarcode = string.Empty; if (SelectedNodeId != null) { CswNbtObjClassLocation NodeAsLocation = _CswNbtResources.Nodes.GetNode(SelectedNodeId); if (null != NodeAsLocation) { CachedNodeName = NodeAsLocation.NodeName; CachedPath = _generateLocationPath(NodeAsLocation); CachedBarcode = NodeAsLocation.Barcode.Barcode; SyncGestalt(); } } this.PendingUpdate = false; }
/// <summary> /// Instance a new Material Request Item based on the selected button option - the type will either be By Bulk or By Size. /// </summary> public CswNbtObjClassRequestItem makeMaterialRequestItem(CswNbtPropertySetMaterial Material, CswNbtObjClass.NbtButtonData ButtonData) { checkForCentralInventoryGroups(_CswNbtResources); CswNbtObjClassRequestItem RequestItem = null; CswNbtMetaDataObjectClass RequestItemOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RequestItemClass); CswNbtMetaDataNodeType RequestItemNT = RequestItemOC.getNodeTypes().FirstOrDefault(); CswNbtSdTabsAndProps PropsAction = new CswNbtSdTabsAndProps(_CswNbtResources); if (null != RequestItemNT) { RequestItem = PropsAction.getAddNodeAndPostChanges(RequestItemNT, delegate(CswNbtNode NewNode) { CswNbtObjClassRequestItem RequestItemNode = NewNode; RequestItemNode.Material.RelatedNodeId = Material.NodeId; if (null != _ThisUser.DefaultLocationId) { CswNbtObjClassLocation DefaultAsLocation = _CswNbtResources.Nodes.GetNode(_ThisUser.DefaultLocationId); if (null != DefaultAsLocation) { RequestItemNode.Location.SelectedNodeId = DefaultAsLocation.NodeId; RequestItemNode.Location.CachedNodeName = DefaultAsLocation.Location.CachedNodeName; RequestItemNode.Location.CachedPath = DefaultAsLocation.Location.CachedPath; } } switch (ButtonData.SelectedText) { case CswNbtPropertySetMaterial.CswEnumRequestOption.Size: RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialSize; break; default: //Request by Bulk RequestItemNode.Type.Value = CswNbtObjClassRequestItem.Types.MaterialBulk; break; } }); } return(RequestItem); }
private bool _validateLocation(ref OperationData OpData) { bool ret = false; ICswNbtTree tree = _getTree(CswEnumNbtObjectClass.LocationClass, OpData.Field1.Value, true); if (tree.getChildNodeCount() > 0) { tree.goToNthChild(0); CswNbtMetaDataObjectClassProp propLoc = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass).getObjectClassProp(CswNbtObjClassLocation.PropertyName.Location); CswNbtObjClassLocation anode = tree.getCurrentNode(); string containingLocation = string.IsNullOrEmpty(anode.Location.Gestalt) ? "" : anode.Location.Gestalt + " > "; OpData.Field1.SecondValue = "(" + containingLocation + tree.getNodeNameForCurrentPosition() + ")"; OpData.Field1.NodeIdStr = tree.getNodeIdForCurrentPosition().ToString(); ret = true; } else { OpData.Field1.StatusMsg = "Could not find a Location with barcode " + OpData.Field1.Value; OpData.Field1.ServerValidated = false; OpData.Log.Add(DateTime.Now + " - ERROR: " + OpData.Field1.StatusMsg); } return(ret); }
public void assignPropsToLocations( string LocationNodeKeys, bool UpdateInventoryGroup, string SelectedInventoryGroupNodeId, bool UpdateAllowInventory, string AllowInventory, bool UpdateControlZone, string SelectedControlZoneNodeId, bool UpdateStorageCompatability, string SelectedImages ) { if( false == string.IsNullOrEmpty( LocationNodeKeys ) ) { ///we don't pre-load he allowinventory value because there's no extra expense ///to doing so repeatedly in the loop CswNbtNode InventoryGroupNode = null; if( ( true == UpdateInventoryGroup ) && ( false == string.IsNullOrEmpty( SelectedInventoryGroupNodeId ) ) ) { CswPrimaryKey IGKey = new CswPrimaryKey(); IGKey.FromString( SelectedInventoryGroupNodeId ); InventoryGroupNode = _CswNbtResources.Nodes[IGKey]; } CswNbtNode ControlZoneNode = null; if( ( true == UpdateControlZone ) && ( false == string.IsNullOrEmpty( SelectedControlZoneNodeId ) ) ) { CswPrimaryKey IGKey = new CswPrimaryKey(); IGKey.FromString( SelectedControlZoneNodeId ); ControlZoneNode = _CswNbtResources.Nodes[IGKey]; } CswDelimitedString Images = new CswDelimitedString( ',' ); if( true == UpdateStorageCompatability ) { if( false == string.IsNullOrEmpty( SelectedImages ) ) { Images.FromString( SelectedImages ); } } foreach( string CurrentLocationKey in LocationNodeKeys.Split( ',' ) ) { if( false == string.IsNullOrEmpty( CurrentLocationKey ) ) { CswNbtNodeKey LKey = new CswNbtNodeKey( CurrentLocationKey ); CswNbtObjClassLocation CurrentLocationNode = _CswNbtResources.Nodes[LKey]; if( null != CurrentLocationNode ) { if( true == UpdateInventoryGroup ) { if( null != InventoryGroupNode ) { CurrentLocationNode.InventoryGroup.RelatedNodeId = InventoryGroupNode.NodeId; } else { CurrentLocationNode.InventoryGroup.RelatedNodeId = null; } } if( true == UpdateControlZone ) { if( null != ControlZoneNode ) { CurrentLocationNode.ControlZone.RelatedNodeId = ControlZoneNode.NodeId; } else { CurrentLocationNode.ControlZone.RelatedNodeId = null; } } if( UpdateAllowInventory ) { CurrentLocationNode.AllowInventory.Checked = CswConvert.ToTristate( AllowInventory ); } if( UpdateStorageCompatability ) { CurrentLocationNode.StorageCompatibility.Value = Images; } CurrentLocationNode.postChanges( true ); }//if current key yielded a node } //if there is a location keye } //iterate locations }//if we have location keys }//assignInventoryGroupToLocations()
/// <summary> /// Default implementation for moving an entity /// </summary> public void Move(CswNbtObjClassLocation locationToMoveTo) { _MoveableObj.Location.SelectedNodeId = locationToMoveTo.NodeId; _MoveableObj.Location.SyncGestalt(); _MoveableObj.Location.RefreshNodeName(); }
public override void update() { CswNbtMetaDataObjectClass InventoryGroupOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.InventoryGroupClass ); CswNbtObjClassInventoryGroup DefaultNodeAsInventoryGroup = null; foreach( CswNbtNode Group in InventoryGroupOc.getNodes( true, false ) ) { CswNbtObjClassInventoryGroup NodeAsInventoryGroup = Group; if( null != NodeAsInventoryGroup ) { if( NodeAsInventoryGroup.Name.Text.ToLower() == "cispro" ) { DefaultNodeAsInventoryGroup = NodeAsInventoryGroup; DefaultNodeAsInventoryGroup.Name.Text = "Default Inventory Group"; DefaultNodeAsInventoryGroup.IsDemo = true; DefaultNodeAsInventoryGroup.postChanges( ForceUpdate: false ); } } } if( null == DefaultNodeAsInventoryGroup ) { CswNbtMetaDataNodeType InventoryGroupNt = InventoryGroupOc.getLatestVersionNodeTypes().FirstOrDefault(); if( null != InventoryGroupNt ) { DefaultNodeAsInventoryGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( InventoryGroupNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); DefaultNodeAsInventoryGroup.Name.Text = "Default Inventory Group"; DefaultNodeAsInventoryGroup.postChanges( ForceUpdate: false ); } } CswNbtMetaDataObjectClass LocationOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.LocationClass ); CswNbtObjClassLocation DefaultLocation = null; if( null != DefaultNodeAsInventoryGroup ) { foreach( CswNbtObjClassLocation Location in LocationOc.getNodes( true, false ) ) { if( null != Location ) { if( Location.Name.Text.ToLower() == "center hall" ) { DefaultLocation = Location; } if( null == Location.InventoryGroup.RelatedNodeId || Int32.MinValue == Location.InventoryGroup.RelatedNodeId.PrimaryKey ) { Location.InventoryGroup.RelatedNodeId = DefaultNodeAsInventoryGroup.NodeId; Location.postChanges( ForceUpdate: false ); } } } } CswNbtMetaDataObjectClass WorkUnitOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.WorkUnitClass ); CswNbtMetaDataNodeType WorkUnitNt = WorkUnitOc.getLatestVersionNodeTypes().FirstOrDefault(); if( null != WorkUnitNt ) { WorkUnitNt.NameTemplateValue = ""; WorkUnitNt.addNameTemplateText( CswNbtObjClassWorkUnit.NamePropertyName ); CswNbtObjClassWorkUnit DefaultWorkUnit = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( WorkUnitNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); DefaultWorkUnit.Name.Text = "Default Work Unit"; DefaultWorkUnit.IsDemo = true; DefaultWorkUnit.postChanges( ForceUpdate: false ); CswNbtMetaDataObjectClass UserOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass ); Collection<Int32> RoleIdsWithUsers = new Collection<Int32>(); CswNbtMetaDataNodeType UserNt = null; foreach( CswNbtObjClassUser User in UserOc.getNodes( true, false ) ) { if( null != User ) { UserNt = UserNt ?? User.NodeType; RoleIdsWithUsers.Add( User.RoleId.PrimaryKey ); if( null == User.WorkUnitProperty.RelatedNodeId || Int32.MinValue == User.WorkUnitProperty.RelatedNodeId.PrimaryKey ) { User.WorkUnitProperty.RelatedNodeId = DefaultWorkUnit.NodeId; } if( null != DefaultLocation && ( null == User.DefaultLocationProperty.SelectedNodeId || Int32.MinValue == User.DefaultLocationProperty.SelectedNodeId.PrimaryKey ) ) { User.DefaultLocationProperty.SelectedNodeId = DefaultLocation.NodeId; } User.postChanges( ForceUpdate: false ); } } CswNbtMetaDataObjectClass RoleOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass ); if( null == UserNt ) { UserNt = UserOc.getLatestVersionNodeTypes().FirstOrDefault(); } if( null != UserNt ) { foreach( CswNbtObjClassRole Role in RoleOc.getNodes( true, false ) ) { if( null != Role && false == RoleIdsWithUsers.Contains( Role.NodeId.PrimaryKey ) ) { string ValidUserName = CswNbtObjClassUser.getValidUserName( Role.Name.Text.ToLower() ); if( ValidUserName != CswNbtObjClassUser.ChemSWAdminUsername ) { if( CswNbtObjClassUser.IsUserNameUnique( _CswNbtSchemaModTrnsctn.MetaData._CswNbtMetaDataResources.CswNbtResources, ValidUserName ) ) { CswNbtObjClassUser NewUser = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( UserNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); NewUser.IsDemo = false; NewUser.Role.RelatedNodeId = Role.NodeId; NewUser.UsernameProperty.Text = ValidUserName; NewUser.WorkUnitProperty.RelatedNodeId = DefaultWorkUnit.NodeId; if( null != DefaultLocation ) { NewUser.DefaultLocationProperty.SelectedNodeId = DefaultLocation.NodeId; } NewUser.PasswordProperty.Password = Role.Name.Text.ToLower(); NewUser.postChanges( ForceUpdate: false ); } } } } } CswNbtMetaDataObjectClass IgPermissionOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.InventoryGroupPermissionClass ); foreach( CswNbtObjClassInventoryGroupPermission Permission in IgPermissionOc.getNodes( true, false ) ) { if( null != Permission ) { if( null != DefaultNodeAsInventoryGroup && ( null == Permission.InventoryGroup.RelatedNodeId || Int32.MinValue == Permission.InventoryGroup.RelatedNodeId.PrimaryKey ) ) { Permission.InventoryGroup.RelatedNodeId = DefaultNodeAsInventoryGroup.NodeId; } if( null == Permission.WorkUnit.RelatedNodeId || Int32.MinValue == Permission.WorkUnit.RelatedNodeId.PrimaryKey ) { Permission.WorkUnit.RelatedNodeId = DefaultWorkUnit.NodeId; } Permission.postChanges( ForceUpdate: false ); } } } CswNbtMetaDataObjectClass MaterialOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass ); CswNbtMetaDataObjectClass SynonymOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialSynonymClass ); CswNbtMetaDataObjectClass SizeOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.SizeClass ); CswNbtMetaDataObjectClass VendorOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.VendorClass ); CswNbtMetaDataObjectClass UnitOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass ); CswNbtObjClassVendor DefaultVendor = null; CswNbtMetaDataNodeType VendorNt = VendorOc.getLatestVersionNodeTypes().FirstOrDefault(); if( null != VendorNt ) { DefaultVendor = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( VendorNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); DefaultVendor.VendorName.Text = "Default Vendor"; DefaultVendor.IsDemo = true; DefaultVendor.postChanges( ForceUpdate: false ); } CswNbtMetaDataNodeType SizeNt = SizeOc.getLatestVersionNodeTypes().FirstOrDefault(); CswNbtMetaDataNodeType SynonymNt = SynonymOc.getLatestVersionNodeTypes().FirstOrDefault(); CswNbtObjClassUnitOfMeasure DefaultSizeUnit = null; CswNbtObjClassUnitOfMeasure DefaultTimeUnit = null; foreach( CswNbtObjClassUnitOfMeasure Unit in UnitOc.getNodes( true, false ) ) { if( null != Unit ) { if( Unit.Name.Text.ToLower() == "g" ) { DefaultSizeUnit = Unit; } else if( Unit.Name.Text.ToLower() == "years" ) { DefaultTimeUnit = Unit; } } } foreach( CswNbtMetaDataNodeType MaterialNt in MaterialOc.getLatestVersionNodeTypes() ) { CswNbtObjClassMaterial Material = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( MaterialNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); Material.IsDemo = true; Material.TradeName.Text = "Default " + MaterialNt.NodeTypeName; if( null != DefaultVendor ) { Material.Supplier.RelatedNodeId = DefaultVendor.NodeId; } Material.PartNumber.Text = "658-35AB"; Material.PhysicalState.Value = CswNbtObjClassMaterial.PhysicalStates.Solid; Material.ExpirationInterval.Quantity = 1; if( null != DefaultTimeUnit ) { Material.ExpirationInterval.UnitId = DefaultTimeUnit.NodeId; } Material.postChanges( ForceUpdate: false ); if( null != SizeNt ) { CswNbtObjClassSize Size = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( SizeNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); Size.IsDemo = true; Size.Material.RelatedNodeId = Material.NodeId; Size.CatalogNo.Text = "NE-H5/3"; Size.InitialQuantity.Quantity = 1; if( null != DefaultSizeUnit ) { Size.InitialQuantity.UnitId = DefaultSizeUnit.NodeId; } Size.postChanges( ForceUpdate: false ); } if( null != SynonymNt ) { CswNbtObjClassMaterialSynonym Synonym = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( SynonymNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); Synonym.IsDemo = true; Synonym.Material.RelatedNodeId = Material.NodeId; Synonym.Name.Text = Material.TradeName.Text + " Synonym"; Synonym.postChanges( ForceUpdate: false ); } } }//Update()
public override void update() { CswNbtMetaDataObjectClass LocationOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.LocationClass ); CswNbtObjClassLocation DefaultLocation = null; foreach( CswNbtObjClassLocation Location in LocationOc.getNodes( true, false ) ) { if( null != Location ) { if( Location.Name.Text.ToLower() == "center hall" ) { DefaultLocation = Location; } } } CswNbtMetaDataObjectClass WorkUnitOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.WorkUnitClass ); CswNbtMetaDataNodeType WorkUnitNt = WorkUnitOc.getLatestVersionNodeTypes().FirstOrDefault(); if( null != WorkUnitNt ) { CswNbtObjClassWorkUnit DefaultWorkUnit = null; foreach (CswNbtObjClassWorkUnit WuNode in WorkUnitNt.getNodes(true, false)) { if( null != WuNode && WuNode.Name.Text == "Default Work Unit" ) { DefaultWorkUnit = WuNode; } } if( null == DefaultWorkUnit ) { DefaultWorkUnit = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(WorkUnitNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false); DefaultWorkUnit.Name.Text = "Default Work Unit"; DefaultWorkUnit.IsDemo = true; DefaultWorkUnit.postChanges(ForceUpdate: false); } CswNbtMetaDataObjectClass UserOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass ); Collection<Int32> RoleIdsWithUsers = new Collection<Int32>(); CswNbtMetaDataNodeType UserNt = null; foreach( CswNbtObjClassUser User in UserOc.getNodes( true, false ) ) { if( null != User ) { UserNt = UserNt ?? User.NodeType; RoleIdsWithUsers.Add( User.RoleId.PrimaryKey ); } } CswNbtMetaDataObjectClass RoleOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RoleClass ); if( null == UserNt ) { UserNt = UserOc.getLatestVersionNodeTypes().FirstOrDefault(); } if( null != UserNt ) { foreach( CswNbtObjClassRole Role in RoleOc.getNodes( true, false ) ) { if( null != Role && false == RoleIdsWithUsers.Contains( Role.NodeId.PrimaryKey ) ) { string ValidUserName = CswNbtObjClassUser.getValidUserName( Role.Name.Text.ToLower() ); if( ValidUserName != CswNbtObjClassUser.ChemSWAdminUsername ) { if( CswNbtObjClassUser.IsUserNameUnique( _CswNbtSchemaModTrnsctn.MetaData._CswNbtMetaDataResources.CswNbtResources, ValidUserName ) ) { CswNbtObjClassUser NewUser = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( UserNt.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode, OverrideUniqueValidation: false ); NewUser.IsDemo = false; NewUser.Role.RelatedNodeId = Role.NodeId; NewUser.UsernameProperty.Text = ValidUserName; if( null != DefaultWorkUnit ) { NewUser.WorkUnitProperty.RelatedNodeId = DefaultWorkUnit.NodeId; } if( null != DefaultLocation ) { NewUser.DefaultLocationProperty.SelectedNodeId = DefaultLocation.NodeId; } NewUser.PasswordProperty.Password = Role.Name.Text.ToLower(); NewUser.postChanges( ForceUpdate: false ); } } } } } } }//Update()
public override void update() { //Create action _CswNbtSchemaModTrnsctn.createAction( CswEnumNbtActionName.Manage_Locations, true, "", "System" ); _CswNbtSchemaModTrnsctn.createModuleActionJunction( CswEnumNbtModuleName.CISPro.ToString(), CswEnumNbtActionName.Manage_Locations ); //Make inventory group property required CswNbtMetaDataObjectClass LocationOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.LocationClass ); if( null != LocationOC ) { CswNbtMetaDataObjectClass InventoryGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.InventoryGroupClass ); if( null != InventoryGroupOC ) { CswNbtMetaDataObjectClassProp InventoryGroupOCP = LocationOC.getObjectClassProp( CswNbtObjClassLocation.PropertyName.InventoryGroup ); if( null != InventoryGroupOCP ) { CswNbtSearch InventoryGroupNodeSearch = _CswNbtSchemaModTrnsctn.CswNbtSearch; InventoryGroupNodeSearch.SearchTerm = "Default Inventory Group"; InventoryGroupNodeSearch.addFilter( InventoryGroupOC, false ); ICswNbtTree TreeOfArbitraryNodes = InventoryGroupNodeSearch.Results(); if( TreeOfArbitraryNodes.getRootTreeNode().ChildNodes.Count > 0 ) { CswNbtTreeNode IGTreeNode = TreeOfArbitraryNodes.getRootTreeNode().ChildNodes[0]; CswNbtNode DefaultInventoryGroupNode = _CswNbtSchemaModTrnsctn.Nodes[IGTreeNode.NodeKey]; if( null != DefaultInventoryGroupNode ) { //*** get tree of locations that don't have an inventory group CswNbtView ViewOfLocationsWithNullIG = _CswNbtSchemaModTrnsctn.makeView(); // ViewOfLocationsWithNullIG.makeNew( "Null IVG Locations", NbtViewVisibility.Global, null, null ); ViewOfLocationsWithNullIG.ViewMode = CswEnumNbtViewRenderingMode.Tree; ViewOfLocationsWithNullIG.Category = "System"; ViewOfLocationsWithNullIG.Width = 100; CswNbtViewRelationship ViewRelLocationsOC = ViewOfLocationsWithNullIG.AddViewRelationship( LocationOC, true ); CswNbtViewProperty ViewPropIGOCP = ViewOfLocationsWithNullIG.AddViewProperty( ViewRelLocationsOC, InventoryGroupOCP ); ViewOfLocationsWithNullIG.AddViewPropertyFilter( ViewPropIGOCP, CswEnumNbtSubFieldName.NodeID, CswEnumNbtFilterMode.Null ); ICswNbtTree TreeOfLocations = _CswNbtSchemaModTrnsctn.getTreeFromView( ViewOfLocationsWithNullIG, true ); TreeOfLocations.goToRoot(); int TotalLocationNodes = TreeOfLocations.getChildNodeCount(); for( int idx = 0; idx < TotalLocationNodes; idx++ ) { TreeOfLocations.goToNthChild( idx ); CswNbtObjClassLocation CurrentLocationNode = TreeOfLocations.getNodeForCurrentPosition(); CurrentLocationNode.InventoryGroup.RelatedNodeId = DefaultInventoryGroupNode.NodeId; CurrentLocationNode.postChanges( true ); TreeOfLocations.goToParentNode(); } // for( int idx = 0; idx < TotalTargetNodes; idx++ ) }//if there are any matching inventory group nodes //foreach( CswNbtNode CurrentLocationNode in LocationOC.getNodes( false, true ) ) //{ // if( null == CurrentLocationNode.Properties[InventoryGroupOCP.PropName].AsRelationship.RelatedNodeId ) // { // CurrentLocationNode.Properties[InventoryGroupOCP.PropName].AsRelationship.RelatedNodeId = DefaultInventoryGroupNode.NodeId; // CurrentLocationNode.postChanges( true ); // }//if the location doesn't have an inventory group //}//iterate location nodes }//if we found a default inventory group _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( InventoryGroupOCP, CswEnumNbtObjectClassPropAttributes.isrequired, true ); }//if we found the inventory group OCP }//if we found the inventory group OC }//if we found the location OC } // update()