예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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()
예제 #7
0
        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);
        }
예제 #8
0
        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()
예제 #10
0
        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);
        }
예제 #11
0
        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);
        }
예제 #12
0
        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;
        }
예제 #13
0
        /// <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);
        }
예제 #14
0
        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);
        }
예제 #15
0
        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() 
예제 #16
0
 /// <summary>
 /// Default implementation for moving an entity
 /// </summary>
 public void Move(CswNbtObjClassLocation locationToMoveTo)
 {
     _MoveableObj.Location.SelectedNodeId = locationToMoveTo.NodeId;
     _MoveableObj.Location.SyncGestalt();
     _MoveableObj.Location.RefreshNodeName();
 }
예제 #17
0
        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()
예제 #18
0
        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()
예제 #19
0
        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()