public CswNbtNode makeRoleNodeFromRoleName(string RoleName)
        {
            CswNbtNode RoleNode = null;

            CswNbtMetaDataObjectClass     Role_ObjectClass         = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RoleClass);
            CswNbtMetaDataObjectClassProp RoleName_ObjectClassProp = Role_ObjectClass.getObjectClassProp(CswNbtObjClassRole.PropertyName.Name);

            // generate the view
            CswNbtView View = new CswNbtView(_CswNbtResources);

            View.ViewName = "CswNbtNodes.makeRoleNodeFromRoleName(" + RoleName + ")";
            CswNbtViewRelationship   RoleRelationship = View.AddViewRelationship(Role_ObjectClass, false);
            CswNbtViewProperty       Prop             = View.AddViewProperty(RoleRelationship, RoleName_ObjectClassProp);
            CswNbtViewPropertyFilter Filter           = View.AddViewPropertyFilter(Prop, CswNbtFieldTypeRuleText.SubFieldName.Text, CswEnumNbtFilterMode.Equals, RoleName, false);

            // generate the tree
            ICswNbtTree UserTree = _CswNbtResources.Trees.getTreeFromView(View, false, true, IncludeHiddenNodes: true);

            // get user node
            UserTree.goToRoot();
            if (UserTree.getChildNodeCount() > 0)
            {
                UserTree.goToNthChild(0);
                RoleNode = UserTree.getNodeForCurrentPosition();
            }
            return(RoleNode);
        }
Exemple #2
0
 public static CswNbtViewNode makeViewNode( CswNbtResources CswNbtResources, CswNbtView View, CswDelimitedString ViewNodeString )
 {
     CswNbtViewNode newNode = null;
     CswEnumNbtViewNodeType type = (CswEnumNbtViewNodeType) ViewNodeString[0];
     if( type == CswEnumNbtViewNodeType.CswNbtViewRelationship )
     {
         newNode = new CswNbtViewRelationship( CswNbtResources, View, ViewNodeString );
     }
     else if( type == CswEnumNbtViewNodeType.CswNbtViewProperty )
     {
         newNode = new CswNbtViewProperty( CswNbtResources, View, ViewNodeString );
     }
     else if( type == CswEnumNbtViewNodeType.CswNbtViewPropertyFilter )
     {
         newNode = new CswNbtViewPropertyFilter( CswNbtResources, View, ViewNodeString );
     }
     else if( type == CswEnumNbtViewNodeType.CswNbtViewRoot )
     {
         newNode = new CswNbtViewRoot( CswNbtResources, View, ViewNodeString );
     }
     else
     {
         throw new CswDniException( CswEnumErrorType.Error, "Invalid ViewNode", "CswNbtViewNode.makeViewNode() got an invalid ViewNodeString: " + ViewNodeString.ToString() );
     }
     return newNode;
 } // makeViewNode()
        public static void setReceiptLotPermissions(CswNbtResources CswNbtResources, bool ModuleIsActive)
        {
            // CIS-52258 - grant Receipt Lot permissions to cispro_ roles

            CswNbtMetaDataObjectClass ReceiptLotOC = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReceiptLotClass);

            CswNbtMetaDataObjectClass     RoleOC      = CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RoleClass);
            CswNbtMetaDataObjectClassProp RoleNameOCP = RoleOC.getObjectClassProp(CswNbtObjClassRole.PropertyName.Name);

            CswNbtView View = new CswNbtView(CswNbtResources);

            View.ViewName = "MLM Enable - Find CISPro roles";
            CswNbtViewRelationship roleRelationship = View.AddViewRelationship(RoleOC, false);
            CswNbtViewProperty     roleNameProp     = View.AddViewProperty(roleRelationship, RoleNameOCP);

            View.AddViewPropertyFilter(roleNameProp,
                                       SubFieldName: CswNbtFieldTypeRuleText.SubFieldName.Text,
                                       FilterMode: CswEnumNbtFilterMode.Begins,
                                       Value: "cispro_",
                                       CaseSensitive: false);
            ICswNbtTree RoleTree = CswNbtResources.Trees.getTreeFromView(View, false, true, IncludeHiddenNodes: true);

            for (Int32 r = 0; r < RoleTree.getChildNodeCount(); r++)
            {
                RoleTree.goToNthChild(r);

                CswNbtObjClassRole RoleNode = RoleTree.getCurrentNode();
                foreach (CswNbtMetaDataNodeType ReceiptLotNT in ReceiptLotOC.getNodeTypes())
                {
                    //if MLM is on, everyone needs View and admins/receivers need Edit
                    if (CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.MLM))
                    {
                        CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.View, ReceiptLotNT, RoleNode, true);

                        if ("cispro_receiver" == RoleNode.Name.Text.ToLower() ||
                            "cispro_admin" == RoleNode.Name.Text.ToLower())
                        {
                            CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.Edit, ReceiptLotNT, RoleNode, true);
                        }
                    }
                    //otherwise, if only Lot Info is on, no one needs Edit, but everyone needs View
                    else if (CswNbtResources.Modules.IsModuleEnabled(CswEnumNbtModuleName.ManufacturerLotInfo))
                    {
                        CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.View, ReceiptLotNT, RoleNode, true);
                        CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.Edit, ReceiptLotNT, RoleNode, false);
                    }
                    //if both MLM and Lot Info are off, no one needs to View or Edit
                    else
                    {
                        CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.View, ReceiptLotNT, RoleNode, false);
                        CswNbtResources.Permit.set(CswEnumNbtNodeTypePermission.Edit, ReceiptLotNT, RoleNode, false);
                    }
                }
                //RoleNode.postChanges( false );  CswNbtPermit does this.

                RoleTree.goToParentNode();
            }
        } // setReceiptLotPermissions()
        }//makeNodeFromNodeTypeId()

        /// <summary>
        /// Fetches a User Node from the Username, using a View and a TreeLoader.
        /// </summary>
        /// <remarks>
        /// not sure if this belongs here in CswNbtNodeCollection
        /// </remarks>
        /// <param name="Username">Username of User</param>
        /// <param name="RequireViewPermissions"></param>
        public CswNbtNode makeUserNodeFromUsername(string Username, bool RequireViewPermissions = true)
        {
            CswTimer   Timer    = new CswTimer();
            CswNbtNode UserNode = null;

            CswNbtMetaDataObjectClass     User_ObjectClass         = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.UserClass);
            CswNbtMetaDataObjectClassProp UserName_ObjectClassProp = User_ObjectClass.getObjectClassProp(CswNbtObjClassUser.PropertyName.Username);

            _CswNbtResources.logTimerResult("makeUserNodeFromUsername 1", Timer);

            // generate the view
            CswNbtView View = new CswNbtView(_CswNbtResources);

            View.ViewName = "CswNbtNodes.makeUserNodeFromUsername(" + Username + ")";
            CswNbtViewRelationship   UserRelationship = View.AddViewRelationship(User_ObjectClass, false);
            CswNbtViewProperty       Prop             = View.AddViewProperty(UserRelationship, UserName_ObjectClassProp);
            CswNbtViewPropertyFilter Filter           = View.AddViewPropertyFilter(Prop, CswNbtFieldTypeRuleText.SubFieldName.Text, CswEnumNbtFilterMode.Equals, Username, false);

            _CswNbtResources.logTimerResult("makeUserNodeFromUsername 2", Timer);

            // generate the tree
            ICswNbtTree UserTree = _CswNbtResources.Trees.getTreeFromView(View, RequireViewPermissions, true, IncludeHiddenNodes: true);

            _CswNbtResources.logTimerResult("makeUserNodeFromUsername 3", Timer);

            // get user node
            UserTree.goToRoot();
            if (UserTree.getChildNodeCount() > 0)
            {
                UserTree.goToNthChild(0);
                _CswNbtResources.logTimerResult("makeUserNodeFromUsername 4", Timer);
                UserNode = UserTree.getNodeForCurrentPosition();
            }
            //else
            //{
            //    foreach( CswNbtMetaDataNodeType UserNodeTypes in User_ObjectClass.NodeTypes )
            //    {
            //        foreach( CswNbtNode user in UserNodeTypes.getNodes( true, false ) )
            //        {
            //            if( user.Properties[UserName_ObjectClassProp.PropName].AsText.Text == Username )
            //            {
            //                UserNode = user;
            //                break;
            //            }
            //        }
            //    }
            _CswNbtResources.logTimerResult("makeUserNodeFromUsername 5", Timer);
            return(UserNode);
        }