コード例 #1
0
        private CswNbtView _getBadSchedulesAndTasksView()
        {
            CswNbtView BadSchedulesView = _CswNbtSchemaModTrnsctn.makeNewView( "29684 - Bad Schedules", CswEnumNbtViewVisibility.Property );
            BadSchedulesView.ViewMode = CswEnumNbtViewRenderingMode.Tree;
            BadSchedulesView.Width = 100;

            CswNbtMetaDataNodeTypeProp AssemblyTargetTypeNTP = AssemblyScheduleNT.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.TargetType );
            CswNbtMetaDataNodeTypeProp EquipmentTargetTypeNTP = EquipmentScheduleNT.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.TargetType );
            CswNbtMetaDataNodeTypeProp AssemblyScheduleNTP = AssemblyTaskNT.getNodeTypePropByObjectClassProp( CswNbtObjClassTask.PropertyName.Generator );
            CswNbtMetaDataNodeTypeProp EquipmentScheduleNTP = EquipmentTaskNT.getNodeTypePropByObjectClassProp( CswNbtObjClassTask.PropertyName.Generator );

            CswNbtViewRelationship AssemblySchedRel = BadSchedulesView.AddViewRelationship( AssemblyScheduleNT, true );
            CswNbtViewRelationship EquipmentSchedRel = BadSchedulesView.AddViewRelationship( EquipmentScheduleNT, true );
            BadSchedulesView.AddViewRelationship( EquipmentSchedRel, CswEnumNbtViewPropOwnerType.Second, AssemblyScheduleNTP, true );
            BadSchedulesView.AddViewRelationship( AssemblySchedRel, CswEnumNbtViewPropOwnerType.Second, EquipmentScheduleNTP, true );            
            
            CswNbtViewProperty AssemblyTargetTypeVP = BadSchedulesView.AddViewProperty( AssemblySchedRel, AssemblyTargetTypeNTP );
            BadSchedulesView.AddViewPropertyFilter( AssemblyTargetTypeVP,
                CswEnumNbtFilterConjunction.And,
                CswEnumNbtFilterResultMode.Unknown,
                CswEnumNbtSubFieldName.NodeType,
                CswEnumNbtFilterMode.Contains,
                "Equipment" );
            
            CswNbtViewProperty EquipmentTargetTypeVP = BadSchedulesView.AddViewProperty( EquipmentSchedRel, EquipmentTargetTypeNTP );
            BadSchedulesView.AddViewPropertyFilter( EquipmentTargetTypeVP,
                CswEnumNbtFilterConjunction.And,
                CswEnumNbtFilterResultMode.Unknown,
                CswEnumNbtSubFieldName.NodeType,
                CswEnumNbtFilterMode.Contains,
                "Assembly" );          

            return BadSchedulesView;
        }
コード例 #2
0
        private void _updateMissingHazardClassesView()
        {
            CswNbtView MHCView = _CswNbtSchemaModTrnsctn.restoreView( "Missing Hazard Classes" );
            if( null == MHCView )
            {
                MHCView = _CswNbtSchemaModTrnsctn.makeNewView( "Missing Hazard Classes", CswEnumNbtViewVisibility.Global );
                MHCView.ViewMode = CswEnumNbtViewRenderingMode.Tree;
                MHCView.Category = "Materials";
            }
            else
            {
                MHCView.Root.ChildRelationships.Clear();
            }

            CswNbtViewRelationship RootRel = MHCView.AddViewRelationship( ChemicalOC, true );

            CswNbtMetaDataObjectClassProp SpecialFlagsOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.SpecialFlags );
            CswNbtViewProperty SpecialFlagsVP = MHCView.AddViewProperty( RootRel, SpecialFlagsOCP );
            MHCView.AddViewPropertyFilter( SpecialFlagsVP,
                                            CswEnumNbtFilterConjunction.And,
                                            CswEnumNbtFilterResultMode.Hide,
                                            CswEnumNbtSubFieldName.Value,
                                            CswEnumNbtFilterMode.NotContains,
                                            "Not Reportable" );

            CswNbtMetaDataObjectClassProp HazardClassesOCP = ChemicalOC.getObjectClassProp( CswNbtObjClassChemical.PropertyName.HazardClasses );
            CswNbtViewProperty HazardClassesVP = MHCView.AddViewProperty( RootRel, HazardClassesOCP );
            MHCView.AddViewPropertyFilter( HazardClassesVP,
                                            CswEnumNbtFilterConjunction.And,
                                            CswEnumNbtFilterResultMode.Hide,
                                            CswEnumNbtSubFieldName.Value,
                                            CswEnumNbtFilterMode.Null );
            MHCView.save();
        }
コード例 #3
0
        }//afterPopulateProps()

        public override CswNbtNode CopyNode(bool IsNodeTemp = false, Action <CswNbtNode> OnCopy = null)
        {
            // Copy this Assembly
            CswNbtNode CopiedAssemblyNode = base.CopyNodeImpl(IsNodeTemp, OnCopy);

            // Copy all Equipment
            CswNbtMetaDataObjectClass EquipmentObjectClass    = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.EquipmentClass);
            CswNbtView               EquipmentView            = new CswNbtView(_CswNbtResources);
            CswNbtViewRelationship   EquipmentRelationship    = EquipmentView.AddViewRelationship(EquipmentObjectClass, false);
            CswNbtViewProperty       AssemblyProperty         = EquipmentView.AddViewProperty(EquipmentRelationship, EquipmentObjectClass.getObjectClassProp(CswNbtObjClassEquipment.PropertyName.Assembly));
            CswNbtViewPropertyFilter AssemblyIsOriginalFilter = EquipmentView.AddViewPropertyFilter(
                AssemblyProperty,
                CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID,
                CswEnumNbtFilterMode.Equals,
                NodeId.PrimaryKey.ToString());

            ICswNbtTree EquipmentTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, EquipmentView, true, false, false);

            EquipmentTree.goToRoot();
            Int32 c = 0;

            while (c < EquipmentTree.getChildNodeCount())
            {
                EquipmentTree.goToNthChild(c);
                CswNbtObjClassEquipment OriginalEquipmentNode = EquipmentTree.getNodeForCurrentPosition();
                OriginalEquipmentNode.CopyNode(IsNodeTemp, delegate(CswNbtNode CopiedEquipmentNode)
                {
                    ((CswNbtObjClassEquipment)CopiedEquipmentNode).Assembly.RelatedNodeId = CopiedAssemblyNode.NodeId;
                });
                EquipmentTree.goToParentNode();
                c++;
            }

            return(CopiedAssemblyNode);
        }
コード例 #4
0
        public override void update()
        {
            CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" );
            if( null != ChemicalNT )
            {
                CswNbtView MHCView = _CswNbtSchemaModTrnsctn.makeNewView( "Missing Hazard Classes", NbtViewVisibility.Global );
                MHCView.Category = "Materials";
                MHCView.Visibility = NbtViewVisibility.Global;
                MHCView.ViewMode = NbtViewRenderingMode.Tree;
            
                CswNbtViewRelationship RootRel = MHCView.AddViewRelationship( ChemicalNT, true );

                CswNbtMetaDataNodeTypeProp SpecialFlagsNTP = ChemicalNT.getNodeTypeProp( "Special Flags" );
                CswNbtViewProperty SpecialFlagsVP = MHCView.AddViewProperty( RootRel, SpecialFlagsNTP );
                MHCView.AddViewPropertyFilter( SpecialFlagsVP,
                                                CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                CswNbtPropFilterSql.FilterResultMode.Hide,
                                                CswNbtSubField.SubFieldName.Value,
                                                CswNbtPropFilterSql.PropertyFilterMode.NotContains,
                                                "Not Reportable");

                CswNbtMetaDataNodeTypeProp HazardClassesNTP = ChemicalNT.getNodeTypeProp( "Hazard Classes" );
                CswNbtViewProperty HazardClassesVP = MHCView.AddViewProperty( RootRel, HazardClassesNTP );
                MHCView.AddViewPropertyFilter( HazardClassesVP,
                                                CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                                CswNbtPropFilterSql.FilterResultMode.Hide,
                                                CswNbtSubField.SubFieldName.Value,
                                                CswNbtPropFilterSql.PropertyFilterMode.Null);
                MHCView.save();
            }
        }//Update()
        } //Update()

        private void _addRegListLOLIListCodesGrid()
        {
            CswNbtMetaDataObjectClass RegListOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.RegulatoryListClass);

            if (null != RegListOC)
            {
                // Grid property
                CswNbtMetaDataObjectClassProp RegListLOLIListCodesGridOCP = RegListOC.getObjectClassProp(CswNbtObjClassRegulatoryList.PropertyName.LOLIListCodes);
                if (null == RegListLOLIListCodesGridOCP)
                {
                    RegListLOLIListCodesGridOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp(new CswNbtWcfMetaDataModel.ObjectClassProp(RegListOC)
                    {
                        PropName  = CswNbtObjClassRegulatoryList.PropertyName.LOLIListCodes,
                        FieldType = CswEnumNbtFieldType.Grid
                    });

                    CswNbtMetaDataObjectClass RegListListCodeOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.RegulatoryListListCodeClass);
                    if (null != RegListListCodeOC)
                    {
                        CswNbtMetaDataObjectClassProp RegListListCodeRegListOCP = RegListListCodeOC.getObjectClassProp(CswNbtObjClassRegulatoryListListCode.PropertyName.RegulatoryList);

                        // Grid View
                        CswNbtView RegListListCodesView = _CswNbtSchemaModTrnsctn.makeView();
                        RegListListCodesView.ViewName = CswNbtObjClassRegulatoryList.PropertyName.LOLIListCodes;
                        RegListListCodesView.ViewMode = CswEnumNbtViewRenderingMode.Grid;
                        CswNbtViewRelationship RegListRel     = RegListListCodesView.AddViewRelationship(RegListOC, false);
                        CswNbtViewRelationship MemberRel      = RegListListCodesView.AddViewRelationship(RegListRel, CswEnumNbtViewPropOwnerType.Second, RegListListCodeRegListOCP, true);
                        CswNbtViewProperty     LOLIListNameVP = RegListListCodesView.AddViewProperty(MemberRel, RegListListCodeOC.getObjectClassProp(CswNbtObjClassRegulatoryListListCode.PropertyName.LOLIListName), 1);
                        _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp(RegListLOLIListCodesGridOCP, CswEnumNbtObjectClassPropAttributes.viewxml, RegListListCodesView.ToString());
                    }
                } // if( null == RegListListCodesGridOCP )
            }     // if( null != RegListOC )
        }         // _addLoliCodesGrid()
コード例 #6
0
        public IEnumerable <CswPrimaryKey> getContainersInGroup()
        {
            CswNbtView ContainersInGroupView = new CswNbtView(_CswNbtResources);

            ContainersInGroupView.ViewName = "ContainersInGroup";

            CswNbtMetaDataObjectClass ContainerOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);
            CswNbtViewRelationship    Rel1        = ContainersInGroupView.AddViewRelationship(ContainerOC, true);

            CswNbtMetaDataObjectClassProp ContainerGroupOCP = ContainerOC.getObjectClassProp(CswNbtObjClassContainer.PropertyName.ContainerGroup);
            CswNbtViewProperty            Prop2             = ContainersInGroupView.AddViewProperty(Rel1, ContainerGroupOCP);
            CswNbtViewPropertyFilter      Filt3             = ContainersInGroupView.AddViewPropertyFilter(Prop2,
                                                                                                          CswEnumNbtFilterConjunction.And,
                                                                                                          CswEnumNbtFilterResultMode.Hide,
                                                                                                          CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID,
                                                                                                          CswEnumNbtFilterMode.Equals,
                                                                                                          this.NodeId.PrimaryKey.ToString(),
                                                                                                          false,
                                                                                                          false);

            Collection <CswPrimaryKey> _ContainerGroupNodePks = new Collection <CswPrimaryKey>();

            ICswNbtTree ContainersInGroupTree = _CswNbtResources.Trees.getTreeFromView(ContainersInGroupView, false, true, true);

            ContainersInGroupTree.goToRoot();
            for (int i = 0; i < ContainersInGroupTree.getChildNodeCount(); i++)
            {
                ContainersInGroupTree.goToNthChild(i);
                _ContainerGroupNodePks.Add(ContainersInGroupTree.getNodeIdForCurrentPosition());
                ContainersInGroupTree.goToParentNode();
            }

            return(_ContainerGroupNodePks);
        }
コード例 #7
0
        public override void update()
        {
            #region UPDATE VIEWS
            CswNbtMetaDataObjectClass userOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UserClass );
            CswNbtMetaDataObjectClassProp archivedOCP = userOC.getObjectClassProp( CswNbtObjClassUser.PropertyName.Archived );

            foreach( CswNbtMetaDataNodeTypeProp relationshipProp in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProps( CswNbtMetaDataFieldType.NbtFieldType.Relationship ) )
            {
                if( relationshipProp.IsUserRelationship() )
                {
                    CswNbtView userView = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( relationshipProp.ViewId );
                    if( false == userView.IsEmpty() )
                    {
                        CswNbtViewRelationship parent = userView.Root.ChildRelationships[0];
                        bool filterExists;
                        bool viewPropExists;
                        CswNbtViewProperty archivedVP = _viewPropAndFilterExists( out filterExists, out viewPropExists, userView, archivedOCP, CswNbtPropFilterSql.PropertyFilterMode.NotEquals, Tristate.True.ToString() );
                        if( false == viewPropExists ) //the view prop isn't there, add it with the filter
                        {
                            userView.AddViewPropertyAndFilter( parent, archivedOCP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, Value: Tristate.True.ToString() );
                        }
                        else if( viewPropExists && false == filterExists ) //the view prop is there, but with no filter
                        {
                            userView.AddViewPropertyFilter( archivedVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.NotEquals, Value: Tristate.True.ToString() );
                        }
                        userView.save();
                    }
                }
            }
            #endregion

        }//Update()
コード例 #8
0
        private CswNbtView _siLocationsListView(bool ReInit)
        {
            CswNbtView Ret = _getSystemView(CswEnumNbtSystemViewName.SILocationsList);

            if (null == Ret)
            {
                CswNbtNode ChemSwAdminRoleNode =
                    _CswNbtResources.Nodes.makeRoleNodeFromRoleName(CswNbtObjClassRole.ChemSWAdminRoleName);
                Ret = new CswNbtView(_CswNbtResources);
                Ret.saveNew(CswEnumNbtSystemViewName.SILocationsList.ToString(), CswEnumNbtViewVisibility.Role,
                            ChemSwAdminRoleNode.NodeId);
                Ret.Category = SiViewCategory;
                Ret.ViewMode = CswEnumNbtViewRenderingMode.List;
                ReInit       = true;
            }
            if (ReInit)
            {
                Ret.Root.ChildRelationships.Clear();
                CswNbtMetaDataObjectClass     LocationOc          = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                CswNbtViewRelationship        LocationVr          = Ret.AddViewRelationship(LocationOc, true);
                CswNbtMetaDataObjectClassProp LocationLocationOcp = LocationOc.getObjectClassProp(CswNbtObjClassLocation.PropertyName.Location);
                CswNbtViewProperty            LocationLocationVp  = Ret.AddViewProperty(LocationVr, LocationLocationOcp);
                LocationLocationVp.SortBy = true;
                Ret.save();
            }
            return(Ret);
        }
コード例 #9
0
        } //Update()

        private void _removeDocumentClassPropAndFilters( CswNbtView DocumentsView, CswNbtMetaDataNodeType MaterialDocumentNT )
        {
            IEnumerable<CswNbtViewRelationship> ChildRelationships = DocumentsView.Root.ChildRelationships[0].ChildRelationships;
            CswNbtMetaDataNodeTypeProp DocumentClassNTP = MaterialDocumentNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDocument.PropertyName.DocumentClass );
            foreach( CswNbtViewRelationship Parent in ChildRelationships )
            {
                if( Parent.SecondName.Equals( MaterialDocumentNT.NodeTypeName ) )
                {
                    CswNbtViewProperty PropToDelete = null;
                    foreach( CswNbtViewProperty ViewProp in Parent.Properties )
                    {
                        if( null != ViewProp.Filters && ViewProp.Filters.Count > 0 )
                        {
                            ViewProp.removeFilter( (CswNbtViewPropertyFilter) ViewProp.Filters[0] );
                        }
                        if( ViewProp.NodeTypePropId == DocumentClassNTP.PropId )
                        {
                            PropToDelete = ViewProp; 
                        }  
                    }
                    if( null != PropToDelete )
                    {
                        Parent.removeProperty( PropToDelete );
                    }
                    DocumentsView.save();
                }
            }
        }
コード例 #10
0
        } // setObjectClassPropListOptions()

        private string _getOwnerName(CswNbtViewProperty ViewProperty)
        {
            string ret = string.Empty;

            CswNbtViewRelationship      parent    = (CswNbtViewRelationship)ViewProperty.Parent;
            CswEnumNbtViewRelatedIdType ownerType = parent.getOwnerType();

            if (ownerType == CswEnumNbtViewRelatedIdType.NodeTypeId)
            {
                CswNbtMetaDataNodeType ntOwner = parent.getNodeTypeOwner();
                ret = ntOwner.NodeTypeName;
            }
            else if (ownerType == CswEnumNbtViewRelatedIdType.ObjectClassId)
            {
                CswNbtMetaDataObjectClass ocOwner = parent.getObjClassOwner();
                ret = ocOwner.ObjectClass.ToString();
            }
            else
            {
                CswNbtMetaDataPropertySet psOwner = parent.getPropSetOwner();
                ret = psOwner.Name;
            }

            return(ret);
        }
コード例 #11
0
 public void OnModifyViewFilters(CswNbtView OldView, CswNbtView NewView)
 {
     if (_RecordStatistics)
     {
         if ((null != OldView) && (null != NewView))
         {
             CswNbtStatisticsEntry.Stats_count_viewfiltermod++;
             foreach (CswNbtViewPropertyFilter OldFilter in OldView.Root.GetAllChildrenOfType(CswEnumNbtViewNodeType.CswNbtViewPropertyFilter))
             {
                 foreach (CswNbtViewPropertyFilter NewFilter in NewView.Root.GetAllChildrenOfType(CswEnumNbtViewNodeType.CswNbtViewPropertyFilter))
                 {
                     if (OldFilter.ArbitraryId == NewFilter.ArbitraryId &&
                         OldFilter.Value != NewFilter.Value)
                     {
                         CswNbtViewProperty ParentProp = ( CswNbtViewProperty )NewFilter.Parent;
                         if (ParentProp.Type == CswEnumNbtViewPropType.NodeTypePropId)
                         {
                             CswNbtStatisticsEntry.IncrementHash(CswNbtStatisticsEntry.NodeTypePropsFilterMod, ParentProp.NodeTypePropId.ToString());
                         }
                         else
                         {
                             CswNbtStatisticsEntry.IncrementHash(CswNbtStatisticsEntry.ObjectClassPropsFilterMod, ParentProp.ObjectClassPropId.ToString());
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #12
0
        private void _createMyContainersView()
        {
            CswNbtView MyContainersView = _CswNbtSchemaModTrnsctn.restoreView( "My Containers" ) ??
                                          _CswNbtSchemaModTrnsctn.makeNewView( "My Containers", NbtViewVisibility.Global );
            MyContainersView.ViewMode = NbtViewRenderingMode.Grid;
            MyContainersView.Category = "Containers";
            MyContainersView.Root.ChildRelationships.Clear();

            CswNbtMetaDataObjectClass ContainerOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.ContainerClass );
            CswNbtViewRelationship ContainerRel = MyContainersView.AddViewRelationship( ContainerOC, false );

            CswNbtViewProperty BarcodeVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Barcode ) );
            BarcodeVP.Order = 1;
            CswNbtViewProperty StatusVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Status ) );
            StatusVP.Order = 2;
            CswNbtViewProperty QuantityVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Quantity ) );
            QuantityVP.Order = 3;
            CswNbtViewProperty LocationVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Location ) );
            LocationVP.Order = 4;
            CswNbtViewProperty DisposedVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Disposed ) );
            DisposedVP.Order = 5;
            MyContainersView.AddViewPropertyFilter( DisposedVP,
                                          CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                          CswNbtPropFilterSql.FilterResultMode.Hide,
                                          CswNbtSubField.SubFieldName.Checked,
                                          CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                          "false" );
            CswNbtViewProperty OwnerVP = MyContainersView.AddViewProperty( ContainerRel, ContainerOC.getObjectClassProp( CswNbtObjClassContainer.PropertyName.Owner ) );
            OwnerVP.Order = 6;
            OwnerVP.ShowInGrid = false;
            MyContainersView.AddViewPropertyFilter( OwnerVP, FilterMode: CswNbtPropFilterSql.PropertyFilterMode.Equals, Value: "me" );
            MyContainersView.save();
        }
コード例 #13
0
        public CswNbtView getAllRecurringRequestItemsView(bool AddRunTimeFilters = true)
        {
            CswNbtView Ret = new CswNbtView(_CswNbtResources)
            {
                Category   = "Request Configuration",
                Visibility = CswEnumNbtViewVisibility.Hidden,
                ViewMode   = CswEnumNbtViewRenderingMode.Grid,
                ViewName   = RecurringItemsViewName
            };
            //Unlike other Request Items, Recurring requests are not tied to a Request, so they don't have a Name.
            CswNbtViewRelationship RequestItemRel = Ret.AddViewRelationship(_RequestItemOC, IncludeDefaultFilters: false);
            CswNbtViewProperty     DescriptionVP  = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Description), 1);

            DescriptionVP.Width = 40;
            CswNbtViewProperty RecurringFrequencyVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.RecurringFrequency), 2);
            CswNbtViewProperty NextReorderDateVP    = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.NextReorderDate), 3);

            NextReorderDateVP.SortBy = true;
            if (AddRunTimeFilters)
            {
                Ret.AddViewPropertyFilter(NextReorderDateVP, ShowAtRuntime: true);
            }
            Ret.AddViewPropertyAndFilter(RequestItemRel,
                                         _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.IsRecurring),
                                         Value: CswEnumTristate.True.ToString(),
                                         ShowInGrid: false);
            return(Ret);
        }
コード例 #14
0
        }//Update()

        /// <summary>
        /// Helper method to determine if a view property exists with a given filter. Returns the view property if it exists.
        /// </summary>
        /// <param name="filterExists">If the filter exists</param>
        /// <param name="viewPropExists">If the given prop is in the view</param>
        /// <param name="view">The view to check</param>
        /// <param name="prop">The property to check</param>
        /// <returns>The view property (null if the prop doesn't exist)</returns>
        private CswNbtViewProperty _viewPropAndFilterExists( out bool filterExists,
            out bool viewPropExists,
            CswNbtView view,
            CswNbtMetaDataObjectClassProp prop,
            CswNbtPropFilterSql.PropertyFilterMode
            filterMode,
            string value )
        {
            CswNbtViewProperty ret = null;
            filterExists = false;
            viewPropExists = false;
            foreach( CswNbtViewProperty viewProp in view.getOrderedViewProps( false ) )
            {
                foreach( CswNbtViewPropertyFilter existingFilter in viewProp.Filters )
                {
                    if( viewProp.ObjectClassPropId.Equals( prop.ObjectClassPropId ) )
                    {
                        viewPropExists = true;
                        if( existingFilter.FilterMode.Equals( filterMode ) &&
                            existingFilter.Value.Equals( value ) )
                        {
                            filterExists = true;
                            ret = viewProp;
                        }
                    }
                }
            }
            return ret;
        }
コード例 #15
0
        //takes the default request view, adds items, and filters by favorites
        public CswNbtView getFavoriteRequestsItemsView()
        {
            CswNbtView Ret = new CswNbtView(_CswNbtResources)
            {
                Category       = "Request Configuration",
                Visibility     = CswEnumNbtViewVisibility.Hidden,
                ViewMode       = CswEnumNbtViewRenderingMode.Grid,
                ViewName       = FavoriteItemsViewName,
                GridGroupByCol = CswNbtObjClassRequestItem.PropertyName.Name
            };
            CswNbtViewRelationship RequestItemRel = Ret.AddViewRelationship(_RequestItemOC, false);
            CswNbtViewProperty     NameVP         = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Name), 1);

            NameVP.SortBy = true;
            Ret.AddViewPropertyFilter(NameVP, ShowAtRuntime: true);
            CswNbtViewProperty DescriptionVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Description), 2);

            DescriptionVP.Width = 50;
            CswNbtViewProperty InventoryGroupVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.InventoryGroup), 3);

            InventoryGroupVP.Width = 30;
            CswNbtViewProperty LocationVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Location), 4);

            LocationVP.Width = 40;
            Ret.AddViewPropertyAndFilter(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Requestor), Value: "me", ShowInGrid: false);
            Ret.AddViewPropertyAndFilter(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.IsFavorite), Value: CswNbtNodePropLogical.toLogicalGestalt(CswEnumTristate.True), ShowInGrid: false);
            return(Ret);
        }
コード例 #16
0
        //takes the request view, adds items, and filters by submitted
        public CswNbtView getSubmittedRequestItemsView()
        {
            CswNbtView Ret = getRequestViewBase(LimitToUnsubmitted: false, AddRootRel: false, IncludeDefaultFilters: false);

            Ret.Visibility     = CswEnumNbtViewVisibility.Hidden;
            Ret.ViewName       = SubmittedItemsViewName;
            Ret.GridGroupByCol = CswNbtObjClassRequestItem.PropertyName.Request;
            CswNbtMetaDataObjectClassProp RequestOcp     = _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request);
            CswNbtViewRelationship        RequestItemRel = Ret.AddViewRelationship(_RequestItemOC, IncludeDefaultFilters: true);

            CswNbtViewProperty NameVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Name), 1);
            //NameVP.ShowInGrid = true;
            CswNbtViewPropertyFilter NameVpf      = Ret.AddViewPropertyFilter(NameVP, ShowAtRuntime: true);
            CswNbtViewProperty       ItemNumberVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.ItemNumber), 2);

            ItemNumberVP.Width = 10;
            CswNbtViewProperty       StatusVP  = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Status), 3);
            CswNbtViewPropertyFilter StatusVpf = Ret.AddViewPropertyFilter(StatusVP, FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswNbtObjClassRequestItem.Statuses.Pending);

            StatusVpf.ShowAtRuntime = true;
            CswNbtViewProperty DescriptionVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Description), 4);

            DescriptionVP.Width = 50;
            CswNbtViewProperty NeededByVP    = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.NeededBy), 5);
            CswNbtViewProperty RequestVP     = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request));
            CswNbtViewProperty CommentsVP    = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Comments));
            CswNbtViewProperty RequestTypeVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.RequestType), 7);

            RequestTypeVP.Width = 20;

            return(Ret);
        }
コード例 #17
0
        //Here we take the Request base and, for each requestItem type, add them to the Cart view
        public CswNbtView getOpenCartsView(bool IncludeItemProperties = true)
        {
            CswNbtView             Ret    = getRequestViewBase(IncludeDefaultFilters: true, LimitToUnsubmitted: true);
            CswNbtViewRelationship RootVr = Ret.Root.ChildRelationships[0];

            if (null != _CurrentRequestNode)
            {
                RootVr.NodeIdsToFilterIn.Clear();
                RootVr.NodeIdsToFilterIn.Add(_CurrentRequestNode.NodeId);
            }
            CswNbtMetaDataObjectClassProp RequestOcp     = _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Request);
            CswNbtViewRelationship        RequestItemRel = Ret.AddViewRelationship(RootVr,
                                                                                   CswEnumNbtViewPropOwnerType.Second,
                                                                                   RequestOcp, IncludeDefaultFilters: true);

            if (IncludeItemProperties)
            {
                CswNbtViewProperty ItemNumberVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.ItemNumber), 1);
                ItemNumberVP.Width = 10;
                CswNbtViewProperty DescriptionVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Description), 2);
                DescriptionVP.Width = 50;
                CswNbtViewProperty NeededByVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.NeededBy), 3);
                CswNbtViewProperty LocationVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.Location), 4);
                LocationVP.Width = 40;
                CswNbtViewProperty InventoryGroupVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.InventoryGroup), 5);
                InventoryGroupVP.Width = 20;
                CswNbtViewProperty RequestedForVP = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.RequestedFor), 6);
                CswNbtViewProperty RequestTypeVP  = Ret.AddViewProperty(RequestItemRel, _RequestItemOC.getObjectClassProp(CswNbtObjClassRequestItem.PropertyName.RequestType), 7);
                RequestTypeVP.Width = 20;
            }

            Ret.SaveToCache(IncludeInQuickLaunch: false);
            return(Ret);
        }
コード例 #18
0
        } // setupPhraseView()

        private void _setupClassificationView(CswNbtView View, CswCommaDelimitedString SelectedClassIds)
        {
            CswNbtMetaDataObjectClass GhsClassOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.GHSClassificationClass);
            CswNbtMetaDataNodeType    GhsClassNT = GhsClassOC.FirstNodeType;

            View.SetVisibility(CswEnumNbtViewVisibility.Hidden, null, null);
            View.ViewMode = CswEnumNbtViewRenderingMode.Grid;
            View.Root.ChildRelationships.Clear();
            if (SelectedClassIds.Count > 0)
            {
                CswNbtViewRelationship ClassVR = View.AddViewRelationship(GhsClassOC, false);
                foreach (string ClassId in SelectedClassIds)
                {
                    CswPrimaryKey ClassPk = new CswPrimaryKey();
                    ClassPk.FromString(ClassId);
                    ClassVR.NodeIdsToFilterIn.Add(ClassPk);
                }

                View.AddViewProperty(ClassVR, GhsClassOC.getObjectClassProp(CswNbtObjClassGHSClassification.PropertyName.Category));
                if (null != GhsClassNT)
                {
                    CswNbtMetaDataNodeTypeProp LanguageProp = GhsClassNT.getNodeTypePropByObjectClassProp(_getLanguageForTranslation());
                    CswNbtViewProperty         LanguageVP   = View.AddViewProperty(ClassVR, LanguageProp);
                    LanguageVP.Width = 100;
                }
            } // if( SelectedClassIds.Count > 0 )
            View.SaveToCache(IncludeInQuickLaunch: false, UpdateCache: true, KeepInQuickLaunch: false);
        }     // _setupClassificationView()
コード例 #19
0
        // This is used by CswNbtNodeProp for unique value enforcement
        public void AddUniqueFilterToView(CswNbtView View, CswNbtViewProperty UniqueValueViewProperty, CswNbtNodePropWrapper PropertyValueToCheck, bool EnforceNullEntries = false, CswNbtSubField SubField = null)
        {
            if (SubField == null)
            {
                SubField = SubFields.Default;
            }

            string StringValueToCheck = PropertyValueToCheck.GetSubFieldValue(SubField);

            // case 31292 - Kludge fix for NodeID filters
            if (SubField.Name == CswEnumNbtSubFieldName.NodeID && false == string.IsNullOrEmpty(StringValueToCheck))
            {
                CswPrimaryKey pkValue = new CswPrimaryKey();
                pkValue.FromString(StringValueToCheck);
                StringValueToCheck = pkValue.PrimaryKey.ToString();
            }
            CswEnumNbtFilterMode FilterMode;

            //case 27670 - in order to reserve the right for compound unique props to be empty, it has to be explicitly stated when creating the ForCompundUnique view
            if (EnforceNullEntries && String.IsNullOrEmpty(StringValueToCheck))
            {
                FilterMode = CswEnumNbtFilterMode.Null;
            }
            else
            {
                FilterMode = CswEnumNbtFilterMode.Equals;
            }

            View.AddViewPropertyFilter(UniqueValueViewProperty, SubField.Name, FilterMode, StringValueToCheck.Trim(), false);
        }
コード例 #20
0
        private CswPrimaryKey _HandleReference(string LocationNodeIdStr, string LocationBarcode)   //, Dictionary<Int32, Int32> NodeMap )
        {
            CswPrimaryKey LocationNodeId = new CswPrimaryKey();

            if (!string.IsNullOrEmpty(LocationNodeIdStr))
            {
                LocationNodeId.FromString(LocationNodeIdStr);
                if (LocationNodeId.PrimaryKey == Int32.MinValue && LocationBarcode != string.Empty)
                {
                    // Find the location with this barcode value
                    CswNbtMetaDataObjectClass     LocationObjectClass    = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                    CswNbtMetaDataObjectClassProp BarcodeObjectClassProp = LocationObjectClass.getObjectClassProp(CswNbtObjClassLocation.PropertyName.Barcode);

                    CswNbtView LocationView = new CswNbtView(_CswNbtResources);
                    // All locations..
                    CswNbtViewRelationship LocationRelationship = LocationView.AddViewRelationship(LocationObjectClass, false);
                    // ..with barcodes
                    CswNbtViewProperty BarcodeViewProperty = LocationView.AddViewProperty(LocationRelationship, BarcodeObjectClassProp);
                    // ..equal to the given barcode
                    CswNbtViewPropertyFilter BarcodeViewPropertyFilter = LocationView.AddViewPropertyFilter(BarcodeViewProperty, CswNbtFieldTypeRuleBarCode.SubFieldName.Barcode, CswEnumNbtFilterMode.Equals, LocationBarcode, false);

                    ICswNbtTree LocationTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, LocationView, true, false, false);
                    if (LocationTree.getChildNodeCount() > 0)
                    {
                        LocationTree.goToNthChild(0);
                        CswNbtNode LocationNode = LocationTree.getNodeForCurrentPosition();
                        LocationNodeId = LocationNode.NodeId;
                    }
                }
            } // if(!string.IsNullOrEmpty(LocationNodeIdStr))
            return(LocationNodeId);
        }     // _HandleReference()
コード例 #21
0
        public CswNbtView setupPhraseView(CswNbtView View, CswCommaDelimitedString SelectedPhraseIds)
        {
            CswNbtMetaDataObjectClass GhsPhraseOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.GHSPhraseClass);
            CswNbtMetaDataNodeType    GhsPhraseNT = GhsPhraseOC.FirstNodeType;

            View.SetVisibility(CswEnumNbtViewVisibility.Hidden, null, null);
            View.ViewMode = CswEnumNbtViewRenderingMode.Grid;
            View.Root.ChildRelationships.Clear();
            if (SelectedPhraseIds.Count > 0)
            {
                CswNbtViewRelationship PhraseVR = View.AddViewRelationship(GhsPhraseOC, false);
                foreach (string PhraseId in SelectedPhraseIds)
                {
                    CswPrimaryKey PhrasePk = new CswPrimaryKey();
                    PhrasePk.FromString(PhraseId);
                    PhraseVR.NodeIdsToFilterIn.Add(PhrasePk);
                }

                View.AddViewProperty(PhraseVR, GhsPhraseOC.getObjectClassProp(CswNbtObjClassGHSPhrase.PropertyName.Code));
                if (null != GhsPhraseNT)
                {
                    CswNbtMetaDataNodeTypeProp LanguageProp = GhsPhraseNT.getNodeTypePropByObjectClassProp(_getLanguageForTranslation());
                    CswNbtViewProperty         LanguageVP   = View.AddViewProperty(PhraseVR, LanguageProp);
                    LanguageVP.Width = 100;
                }
            } // if( SelectedPhraseIds.Count > 0 )

            return(View);
        } // setupPhraseView()
コード例 #22
0
        private void _addFilter(CswNbtViewEditorData Return)
        {
            CswNbtViewRelationship parent = (CswNbtViewRelationship)CurrentView.FindViewNodeByArbitraryId(Request.Property.ParentArbitraryId);

            CswNbtViewRoot.forEachRelationship eachRel = relationship =>
            {
                if (parent.SecondId == relationship.SecondId)
                {
                    CswNbtViewProperty viewProp = relationship.Properties.FirstOrDefault(vp => vp.Name == Request.Property.Name);
                    if (null != viewProp)
                    {
                        if (false == _hasFilter(viewProp))
                        {
                            CurrentView.AddViewPropertyFilter(viewProp,
                                                              Conjunction: (CswEnumNbtFilterConjunction)Request.FilterConjunction,
                                                              SubFieldName: (CswEnumNbtSubFieldName)Request.FilterSubfield,
                                                              FilterMode: (CswEnumNbtFilterMode)Request.FilterMode,
                                                              Value: Request.FilterValue);
                        }
                    }
                    else
                    {
                        ICswNbtMetaDataProp Prop = null;
                        if (Request.Property.Type.Equals(CswEnumNbtViewPropType.NodeTypePropId))
                        {
                            Prop = _CswNbtResources.MetaData.getNodeTypeProp(Request.Property.NodeTypePropId);
                        }
                        else if (Request.Property.Type.Equals(CswEnumNbtViewPropType.ObjectClassPropId))
                        {
                            Prop = _CswNbtResources.MetaData.getObjectClassProp(Request.Property.ObjectClassPropId);
                        }

                        CurrentView.AddViewPropertyAndFilter(relationship, Prop,
                                                             Value: Request.FilterValue,
                                                             Conjunction: Request.FilterConjunction,
                                                             SubFieldName: (CswEnumNbtSubFieldName)Request.FilterSubfield,
                                                             FilterMode: (CswEnumNbtFilterMode)Request.FilterMode,
                                                             ShowInGrid: false       // the user is filtering on a prop not in the grid, don't show it in the grid
                                                             );
                    }
                }
            };
            CurrentView.Root.eachRelationship(eachRel, null);

            _getFilters(Return, CurrentView);
            HashSet <string> seenRels = new HashSet <string>();

            CswNbtViewRoot.forEachRelationship eachRelationship = relationship =>
            {
                if (false == seenRels.Contains(relationship.TextLabel))
                {
                    seenRels.Add(relationship.TextLabel);
                    Return.Step4.Relationships.Add(relationship);
                }
            };
            CurrentView.Root.eachRelationship(eachRelationship, null);

            Return.Step4.ViewJson = CswConvert.ToString(CurrentView.ToJson());
        }
コード例 #23
0
        /// <summary>
        /// Creates a CswNbtViewPropertyFilter and returns its Json
        /// </summary>
        public JObject makeViewPropFilter(CswNbtView View, JObject FilterProp, bool ClearFilters = false)
        {
            JObject Ret = new JObject();

            string FiltArbitraryId = CswConvert.ToString(FilterProp["filtarbitraryid"]);
            string PropArbitraryId = CswConvert.ToString(FilterProp["proparbitraryid"]);

            if (FiltArbitraryId == "undefined")
            {
                FiltArbitraryId = string.Empty;
            }
            if (PropArbitraryId == "undefined")
            {
                PropArbitraryId = string.Empty;
            }

            CswNbtViewPropertyFilter ViewPropFilt = null;

            if (false == string.IsNullOrEmpty(PropArbitraryId))
            {
                CswNbtViewProperty ViewProp = (CswNbtViewProperty)View.FindViewNodeByArbitraryId(PropArbitraryId);

                if (false == string.IsNullOrEmpty(FiltArbitraryId))
                {
                    ViewPropFilt = (CswNbtViewPropertyFilter)View.FindViewNodeByArbitraryId(FiltArbitraryId);
                }
                else
                {
                    ViewPropFilt = View.AddViewPropertyFilter(ViewProp, CswEnumNbtSubFieldName.Unknown, CswEnumNbtFilterMode.Unknown, string.Empty, false);
                }

                //Case 23779, 23937, 24064
                if (ClearFilters && null != ViewPropFilt)
                {
                    ViewProp.Filters.Clear();
                    ViewProp.Filters.Add(ViewPropFilt);
                }
            }

            if (ViewPropFilt != null)
            {
                CswEnumNbtFilterConjunction Conjunction = (CswEnumNbtFilterConjunction)CswConvert.ToString(FilterProp["conjunction"]);
                CswEnumNbtSubFieldName      FieldName   = (CswEnumNbtSubFieldName)CswConvert.ToString(FilterProp["subfieldname"]);
                CswEnumNbtFilterMode        FilterMode  = (CswEnumNbtFilterMode)CswConvert.ToString(FilterProp["filter"]);
                string FilterValue = CswConvert.ToString(FilterProp["filtervalue"]);

                if (FieldName != CswEnumNbtSubFieldName.Unknown &&
                    FilterMode != CswEnumNbtFilterMode.Unknown)
                {
                    ViewPropFilt.FilterMode   = FilterMode;
                    ViewPropFilt.Conjunction  = Conjunction;
                    ViewPropFilt.SubfieldName = FieldName;
                    ViewPropFilt.Value        = FilterValue;
                    _addVbPropFilter(Ret, ViewPropFilt);
                }
            }
            return(Ret);
        }
コード例 #24
0
        } //Update()

        //Get all Inspection targets with Status = OK, and any inspection design nodes that been touched (i.e. - not pending or overdue)
        //If no designs exist in the view for the given target, then the target should have a status of Not Inspected instead.
        private CswNbtView _getInvalidTargetsView()
        {
            CswNbtView myView = _CswNbtSchemaModTrnsctn.makeView();

            myView.Visibility = NbtViewVisibility.Global;
            myView.ViewMode   = NbtViewRenderingMode.Tree;

            CswNbtMetaDataObjectClass Rel1SecondOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(NbtObjectClass.InspectionTargetClass);
            CswNbtViewRelationship    Rel1         = myView.AddViewRelationship(Rel1SecondOC, true);

            CswNbtViewProperty Prop2 = null;

            foreach (CswNbtMetaDataNodeType Rel1NT in Rel1SecondOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp Prop2NTP = Rel1NT.getNodeTypeProp("Status");
                if (null != Prop2NTP)
                {
                    Prop2 = myView.AddViewProperty(Rel1, Prop2NTP);
                    break;
                }
            }
            myView.AddViewPropertyFilter(Prop2,
                                         CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                         CswNbtPropFilterSql.FilterResultMode.Hide,
                                         CswNbtSubField.SubFieldName.Value,
                                         CswNbtPropFilterSql.PropertyFilterMode.Equals,
                                         "OK");

            CswNbtMetaDataObjectClass     Rel4SecondOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(NbtObjectClass.InspectionDesignClass);
            CswNbtMetaDataObjectClassProp Rel4Prop     = Rel4SecondOC.getObjectClassProp(CswNbtObjClassInspectionDesign.PropertyName.Target);
            CswNbtViewRelationship        Rel4         = myView.AddViewRelationship(Rel1, NbtViewPropOwnerType.Second, Rel4Prop, true);

            CswNbtViewProperty Prop5 = null;

            foreach (CswNbtMetaDataNodeType Rel4NT in Rel4SecondOC.getNodeTypes())
            {
                CswNbtMetaDataNodeTypeProp Prop5NTP = Rel4NT.getNodeTypeProp("Status");
                if (null != Prop5NTP)
                {
                    Prop5 = myView.AddViewProperty(Rel4, Prop5NTP);
                    break;
                }
            }
            myView.AddViewPropertyFilter(Prop5,
                                         CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                         CswNbtPropFilterSql.FilterResultMode.Hide,
                                         CswNbtSubField.SubFieldName.Value,
                                         CswNbtPropFilterSql.PropertyFilterMode.NotEquals,
                                         "Pending");

            myView.AddViewPropertyFilter(Prop5,
                                         CswNbtPropFilterSql.PropertyFilterConjunction.And,
                                         CswNbtPropFilterSql.FilterResultMode.Hide,
                                         CswNbtSubField.SubFieldName.Value,
                                         CswNbtPropFilterSql.PropertyFilterMode.NotEquals,
                                         "Overdue");
            return(myView);
        }
コード例 #25
0
 protected bool _hasFilter(CswNbtViewProperty ViewProp)
 {
     return(ViewProp.Filters.Any(Filter =>
                                 Filter.Value == Request.FilterValue &&
                                 Filter.Conjunction == (CswEnumNbtFilterConjunction)Request.FilterConjunction &&
                                 Filter.FilterMode == (CswEnumNbtFilterMode)Request.FilterMode &&
                                 Filter.SubfieldName == (CswEnumNbtSubFieldName)Request.FilterSubfield
                                 ));
 }
コード例 #26
0
        private CswNbtNode _getTargetNodeForGenerator(CswNbtNode CswNbtNodeGenerator, CswPrimaryKey ParentPk, string TargetDateFilter)
        {
            CswNbtNode ReturnVal = null;

            CswNbtObjClassGenerator GeneratorNode = (CswNbtObjClassGenerator)CswNbtNodeGenerator;

            if (String.IsNullOrEmpty(GeneratorNode.TargetType.SelectedNodeTypeIds.ToString()))
            {
                throw new CswDniException(CswEnumErrorType.Error, "Invalid generator configuration", "_getTargetNodeForGenerator got a null SelectedNodeTypeIds on nodeid " + GeneratorNode.NodeId);
            }
            else
            {
                Int32 NodeTypeId = CswConvert.ToInt32(GeneratorNode.TargetType.SelectedNodeTypeIds[0]);   // case 28612 - just check the first one
                if (Int32.MinValue != NodeTypeId)
                {
                    CswNbtMetaDataNodeType ThisCreatedNodeType = _CswNbtResources.MetaData.getNodeType(NodeTypeId);
                    if (null != ThisCreatedNodeType)
                    {
                        CswNbtMetaDataNodeType    CreatedNodeType            = ThisCreatedNodeType.getNodeTypeLatestVersion();
                        CswNbtMetaDataObjectClass CreatedMetaDataObjectClass = CreatedNodeType.getObjectClass();

                        CswNbtObjClass CreatedObjClass = CswNbtObjClassFactory.makeObjClass(_CswNbtResources, CreatedMetaDataObjectClass);
                        if (!(CreatedObjClass is CswNbtPropertySetGeneratorTarget))
                        {
                            throw new CswDniException("CswNbtActGenerateNodes got an invalid object class: " + CreatedObjClass.ObjectClass.ToString());
                        }
                        CswNbtPropertySetGeneratorTarget GeneratorTarget = (CswNbtPropertySetGeneratorTarget)CreatedObjClass;

                        // CreatedForNTP is the parent or owner of the new node. Inspections created for Inspection Targets, Tasks for Equipment, etc.
                        CswNbtMetaDataNodeTypeProp CreatedForNTP = CreatedNodeType.getNodeTypePropByObjectClassProp(GeneratorTarget.ParentPropertyName);
                        CswNbtMetaDataNodeTypeProp GeneratorNTP  = CreatedNodeType.getNodeTypePropByObjectClassProp(CswNbtPropertySetGeneratorTarget.PropertyName.Generator);
                        CswNbtMetaDataNodeTypeProp DueDateNTP    = CreatedNodeType.getNodeTypePropByObjectClassProp(CswNbtPropertySetGeneratorTarget.PropertyName.DueDate);

                        CswNbtView CswNbtView = new CswNbtView(_CswNbtResources);
                        CswNbtView.ViewName = "Nodes for Generator";

                        CswNbtViewRelationship RootRelationship     = CswNbtView.AddViewRelationship(CreatedNodeType, false);
                        CswNbtViewProperty     CreatedForParentProp = CswNbtView.AddViewProperty(RootRelationship, CreatedForNTP);
                        CswNbtView.AddViewPropertyFilter(CreatedForParentProp, CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID, CswEnumNbtFilterMode.Equals, ParentPk.PrimaryKey.ToString(), false);
                        CswNbtViewProperty GeneratorProp = CswNbtView.AddViewProperty(RootRelationship, GeneratorNTP);
                        CswNbtView.AddViewPropertyFilter(GeneratorProp, CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID, CswEnumNbtFilterMode.Equals, CswNbtNodeGenerator.NodeId.PrimaryKey.ToString(), false);
                        CswNbtViewProperty DueDateProp = CswNbtView.AddViewProperty(RootRelationship, DueDateNTP);
                        //Case 24572
                        CswNbtView.AddViewPropertyFilter(DueDateProp, CswNbtFieldTypeRuleDateTime.SubFieldName.Value, CswEnumNbtFilterMode.Equals, TargetDateFilter, false);

                        ICswNbtTree ExistingNodesTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, CswNbtView, true, false, false);

                        if (ExistingNodesTree.getChildNodeCount() > 0)
                        {
                            ExistingNodesTree.goToNthChild(0);
                            ReturnVal = ExistingNodesTree.getNodeForCurrentPosition();
                        }
                    }
                }
            }
            return(ReturnVal);
        }//_getTargetNodeForGenerator
コード例 #27
0
        /// <summary>
        /// Get table from a universal search.
        /// </summary>
        /// <param name="View"></param>
        /// <returns></returns>
        public JObject getTable( CswNbtView View )
        {
            _View = View;
            JObject ret = new JObject();

            if( _View != null )
            {
                // Find current max order set in view
                Int32 maxOrder = ( from ViewRel in _View.Root.ChildRelationships
                                   from ViewProp in ViewRel.Properties
                                   select ViewProp.Order ).Concat( new[] { 0 } ).Max();  // thanks Resharper!

                // Set default order for properties in the view without one
                foreach( CswNbtViewProperty ViewProp in from ViewRel in _View.Root.ChildRelationships
                                                        from ViewProp in ViewRel.Properties
                                                        where Int32.MinValue == ViewProp.Order
                                                        select ViewProp )
                {
                    ViewProp.Order = maxOrder + 1;
                    maxOrder++;
                }

                // Add 'default' Table layout elements for the nodetype to the view for efficiency
                // Set the order to be after properties in the view
                foreach( CswNbtViewRelationship ViewRel in _View.Root.ChildRelationships )
                {
                    if( ViewRel.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId )
                    {
                        IEnumerable<CswNbtMetaDataNodeTypeProp> Props = _CswNbtResources.MetaData.NodeTypeLayout.getPropsInLayout( ViewRel.SecondId, Int32.MinValue, CswEnumNbtLayoutType.Table );
                        foreach( CswNbtMetaDataNodeTypeProp NTProp in Props )
                        {
                            bool AlreadyExists = false;
                            foreach( CswNbtViewProperty ViewProp in ViewRel.Properties )
                            {
                                if( ViewProp.NodeTypePropId == NTProp.PropId )
                                {
                                    AlreadyExists = true;
                                }
                            }

                            if( false == AlreadyExists )
                            {
                                CswNbtViewProperty NewViewProp = _View.AddViewProperty( ViewRel, NTProp );
                                CswNbtMetaDataNodeTypeLayoutMgr.NodeTypeLayout propTableLayout = NTProp.getTableLayout();
                                NewViewProp.Order = maxOrder + propTableLayout.DisplayRow;
                            }
                        } // foreach( CswNbtMetaDataNodeTypeProp NTProp in Props )
                    } // if( ViewRel.SecondType == RelatedIdType.NodeTypeId )
                } // foreach( CswNbtViewRelationship ViewRel in View.Root.ChildRelationships )

                ICswNbtTree Tree = _CswNbtResources.Trees.getTreeFromView( _View, true, false, false );
                ret = makeTableFromTree( Tree, null );
            } // if( _View != null )
            return ret;
        } // getTable()
コード例 #28
0
        private void _deleteFutureNodes()
        {
            // BZ 6754 - Delete all future nodes
            CswNbtMetaDataObjectClass GeneratorObjectClass = ObjectClass;

            if( TargetType.SelectedNodeTypeIds.Count == 1 )
            {
                Int32 SelectedTargetNtId = CswConvert.ToInt32( TargetType.SelectedNodeTypeIds[0] );
                if( Int32.MinValue != SelectedTargetNtId )
                {
                    CswNbtMetaDataNodeType TargetNodeType = _CswNbtResources.MetaData.getNodeType( SelectedTargetNtId );
                    if( null != TargetNodeType )
                    {
                        CswNbtMetaDataObjectClass TargetObjectClass = TargetNodeType.getObjectClass();

                        CswNbtObjClass TargetObjClass = CswNbtObjClassFactory.makeObjClass( _CswNbtResources, TargetObjectClass );
                        if( !( TargetObjClass is CswNbtPropertySetGeneratorTarget ) )
                        {
                            throw new CswDniException( "CswNbtObjClassGenerator.beforeDeleteNode() got an invalid object class: " + TargetObjectClass.ObjectClass );
                        }

                        CswNbtMetaDataNodeTypeProp GeneratorProp = TargetNodeType.getNodeTypePropByObjectClassProp( CswNbtPropertySetGeneratorTarget.PropertyName.Generator );
                        CswNbtMetaDataNodeTypeProp IsFutureProp = TargetNodeType.getNodeTypePropByObjectClassProp( CswNbtPropertySetGeneratorTarget.PropertyName.IsFuture );

                        CswNbtView View = new CswNbtView( _CswNbtResources );
                        View.ViewName = "CswNbtObjClassSchedule.beforeDeleteNode()";
                        CswNbtViewRelationship GeneratorRelationship = View.AddViewRelationship( GeneratorObjectClass, false );
                        GeneratorRelationship.NodeIdsToFilterIn.Add( _CswNbtNode.NodeId );
                        CswNbtViewRelationship TargetRelationship = View.AddViewRelationship( GeneratorRelationship, CswEnumNbtViewPropOwnerType.Second, GeneratorProp, false );
                        CswNbtViewProperty IsFutureProperty = View.AddViewProperty( TargetRelationship, IsFutureProp );
                        View.AddViewPropertyFilter( IsFutureProperty, CswNbtFieldTypeRuleLogical.SubFieldName.Checked, CswEnumNbtFilterMode.Equals, CswEnumTristate.True );

                        ICswNbtTree TargetTree = _CswNbtResources.Trees.getTreeFromView( _CswNbtResources.CurrentNbtUser, View, true, false, false );

                        TargetTree.goToRoot();
                        if( TargetTree.getChildNodeCount() > 0 ) // should always be the case
                        {
                            TargetTree.goToNthChild( 0 );
                            if( TargetTree.getChildNodeCount() > 0 ) // might not always be the case
                            {
                                for( int i = 0; i < TargetTree.getChildNodeCount(); i += 1 )
                                {
                                    TargetTree.goToNthChild( i );

                                    CswNbtNode TargetNode = TargetTree.getNodeForCurrentPosition();
                                    TargetNode.delete();

                                    TargetTree.goToParentNode();
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #29
0
        /// <summary>
        /// Returns a view used to show the containers available for dispense for the given Request Item
        /// </summary>
        /// <returns></returns>
        public CswNbtView getDispensibleContainersView(CswPrimaryKey RequestItemId)
        {
            CswNbtView Ret = new CswNbtView(_CswNbtResources);

            CswNbtObjClassRequestItem NodeAsRequestItem = _CswNbtResources.Nodes[RequestItemId];

            if (null != NodeAsRequestItem)
            {
                //TODO - if we're dispensing a specific container or EP, we don't care about the specific material
                CswNbtNode TargetNode = _CswNbtResources.Nodes[NodeAsRequestItem.Target.RelatedNodeId];
                if (null != TargetNode)
                {
                    Ret.ViewName = "Containers of " + TargetNode.NodeName;
                    Ret.ViewMode = CswEnumNbtViewRenderingMode.Grid;
                    Ret.Category = "Dispensing";

                    CswNbtMetaDataObjectClass ContainerOc  = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ContainerClass);
                    CswNbtViewRelationship    ContainerRel = Ret.AddViewRelationship(ContainerOc, true);
                    CswNbtViewProperty        BarcodeVp    = Ret.AddViewProperty(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Barcode));

                    //Filter Containers by Materials in Requested EP
                    if (NodeAsRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.EnterprisePart)
                    {
                        CswCommaDelimitedString EPMaterialPks = _getMaterialPKsForEP(NodeAsRequestItem.EnterprisePart.RelatedNodeId);
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Material), SubFieldName: CswEnumNbtSubFieldName.NodeID, FilterMode: CswEnumNbtFilterMode.In, Value: EPMaterialPks.ToString(), ShowInGrid: false);
                    }
                    else//Filters Containers by Requested Material
                    {
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Material), SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: TargetNode.NodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Missing), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumTristate.True, ShowInGrid: false);
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Quantity), SubFieldName: CswEnumNbtSubFieldName.Value, FilterMode: CswEnumNbtFilterMode.GreaterThan, Value: "0");
                    Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Status), FilterMode: CswEnumNbtFilterMode.NotEquals, Value: CswEnumNbtContainerStatuses.Expired, ShowInGrid: false);
                    Ret.AddViewProperty(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Location));

                    CswNbtMetaDataObjectClass     LocationOc        = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                    CswNbtMetaDataObjectClassProp InventoryGroupOcp = LocationOc.getObjectClassProp(CswNbtObjClassLocation.PropertyName.InventoryGroup);
                    CswNbtViewRelationship        LocationVr        = Ret.AddViewRelationship(ContainerRel, CswEnumNbtViewPropOwnerType.First, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Location), IncludeDefaultFilters: true);
                    if (CswTools.IsPrimaryKey(NodeAsRequestItem.InventoryGroup.RelatedNodeId))   //Filter by Inventory Group
                    {
                        Ret.AddViewPropertyAndFilter(LocationVr, InventoryGroupOcp, SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: NodeAsRequestItem.InventoryGroup.RelatedNodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                    else
                    {
                        Ret.AddViewPropertyAndFilter(LocationVr, InventoryGroupOcp, SubFieldName: CswEnumNbtSubFieldName.NodeID, FilterMode: CswEnumNbtFilterMode.Null, ShowInGrid: false);
                    }

                    if (NodeAsRequestItem.Type.Value == CswNbtObjClassRequestItem.Types.MaterialSize) //Filter By Size (if present)
                    {
                        Ret.AddViewPropertyAndFilter(ContainerRel, ContainerOc.getObjectClassProp(CswNbtObjClassContainer.PropertyName.Size), SubFieldName: CswEnumNbtSubFieldName.NodeID, Value: NodeAsRequestItem.Size.RelatedNodeId.PrimaryKey.ToString(), ShowInGrid: false);
                    }
                }
            }
            return(Ret);
        }
コード例 #30
0
        }//afterPopulateProps()

        public override void addDefaultViewFilters(CswNbtViewRelationship ParentRelationship)
        {
            // BZ 10454
            // Filter out Retired Equipment by default
            CswNbtMetaDataObjectClassProp StatusOCP            = this.ObjectClass.getObjectClassProp(PropertyName.Status);
            CswNbtViewProperty            StatusViewProp       = ParentRelationship.View.AddViewProperty(ParentRelationship, StatusOCP);
            CswNbtViewPropertyFilter      StatusViewPropFilter = ParentRelationship.View.AddViewPropertyFilter(StatusViewProp,
                                                                                                               StatusOCP.getFieldTypeRule().SubFields.Default.Name,
                                                                                                               CswEnumNbtFilterMode.NotEquals,
                                                                                                               "Retired", //StatusOptionToDisplayString( StatusOption.Retired ),
                                                                                                               false);
        }