Esempio n. 1
0
 public void HandleModifyViewFilters(CswNbtView OldView, CswNbtView NewView)
 {
     Master.HandleModifyViewFilters(OldView, NewView);
 }
Esempio n. 2
0
        /// <summary>
        /// For loading from JSON
        /// </summary>
        public CswNbtViewProperty(CswNbtResources CswNbtResources, CswNbtView View, JObject PropObj)
            : base(CswNbtResources, View)
        {
            try
            {
                string _Type = CswConvert.ToString(PropObj["type"]);
                if (!string.IsNullOrEmpty(_Type))
                {
                    Type = _Type;
                }

                Int32 _Value = CswConvert.ToInt32(PropObj["value"]);
                if (Int32.MinValue != _Value)  //backwards compatibility
                {
                    if (Type == CswEnumNbtViewPropType.NodeTypePropId)
                    {
                        NodeTypePropId = _Value;
                    }
                    else
                    {
                        ObjectClassPropId = _Value;
                    }
                }

                Int32 _NtPropId = CswConvert.ToInt32(PropObj["nodetypepropid"]);
                if (Int32.MinValue != _NtPropId)
                {
                    NodeTypePropId = _NtPropId;
                }

                Int32 _OcPropId = CswConvert.ToInt32(PropObj["objectclasspropid"]);
                if (Int32.MinValue != _OcPropId)
                {
                    ObjectClassPropId = _OcPropId;
                }

                string _Name = CswConvert.ToString(PropObj["name"]);
                if (!string.IsNullOrEmpty(_Name))
                {
                    Name = _Name;
                }

                if (PropObj["sortby"] != null)
                {
                    bool _Sort = CswConvert.ToBoolean(PropObj["sortby"]);
                    SortBy = _Sort;
                }

                string _SortedMethod = CswConvert.ToString(PropObj["sortmethod"]);
                if (!string.IsNullOrEmpty(_SortedMethod))
                {
                    SortMethod = _SortedMethod;
                }


                string _FieldType = CswConvert.ToString(PropObj["fieldtype"]);
                if (!string.IsNullOrEmpty(_FieldType))
                {
                    FieldType = CswNbtMetaDataFieldType.getFieldTypeFromString(_FieldType);
                }

                Int32 _Order = CswConvert.ToInt32(PropObj["order"]);
                if (Int32.MinValue != _Order)
                {
                    Order = _Order;
                }

                Int32 _Width = CswConvert.ToInt32(PropObj["width"]);
                if (Int32.MinValue != _Width)
                {
                    Width = _Width;
                }

                ShowInGrid = CswConvert.ToBoolean(PropObj["showingrid"]);
            }
            catch (Exception ex)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Misconfigured CswViewProperty",
                                          "CswViewProperty.constructor(xmlnode) encountered an invalid attribute value",
                                          ex);
            }
            try
            {
                JProperty FiltersProp = PropObj.Property(_FiltersName);
                if (null != FiltersProp)
                {
                    JObject FiltersObj = (JObject)FiltersProp.Value;
                    foreach (CswNbtViewPropertyFilter Filter in
                             from FilterProp
                             in FiltersObj.Properties()
                             select(JObject) FilterProp.Value
                             into FilterObj
                             let NodeName = CswConvert.ToString(FilterObj["nodename"])
                                            where NodeName == CswEnumNbtViewXmlNodeName.Filter.ToString().ToLower()
                                            select new CswNbtViewPropertyFilter(CswNbtResources, _View, FilterObj))
                    {
                        this.addFilter(Filter);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Misconfigured CswViewProperty",
                                          "CswViewProperty.constructor(xmlnode) encountered an invalid filter definition",
                                          ex);
            }
        }
 public void AddUniqueFilterToView(CswNbtView View, CswNbtViewProperty UniqueValueViewProperty, CswNbtNodePropWrapper PropertyValueToCheck, bool EnforceNullEntries = false)
 {
     _CswNbtFieldTypeRuleDefault.AddUniqueFilterToView(View, UniqueValueViewProperty, PropertyValueToCheck, EnforceNullEntries);
 }
Esempio n. 4
0
        public Collection <CswNbtViewRelationship> getViewChildRelationshipOptions(CswNbtView View, string ArbitraryId)
        {
            Collection <CswNbtViewRelationship> ret = new Collection <CswNbtViewRelationship>();

            if (View.ViewId != null)
            {
                CswNbtViewNode SelectedViewNode = View.FindViewNodeByArbitraryId(ArbitraryId);
                if (View.ViewMode != CswEnumNbtViewRenderingMode.Unknown || View.Root.ChildRelationships.Count == 0)
                {
                    if (SelectedViewNode is CswNbtViewRelationship)
                    {
                        CswNbtViewRelationship CurrentRelationship = (CswNbtViewRelationship)SelectedViewNode;
                        Int32          CurrentLevel = 0;
                        CswNbtViewNode Parent       = CurrentRelationship;
                        while (!(Parent is CswNbtViewRoot))
                        {
                            CurrentLevel++;
                            Parent = Parent.Parent;
                        }

                        // Child options are all relations to this nodetype
                        Int32 CurrentId = CurrentRelationship.SecondId;

                        Collection <CswNbtViewRelationship> Relationships = null;
                        if (CurrentRelationship.SecondType == CswEnumNbtViewRelatedIdType.PropertySetId)
                        {
                            Relationships = getPropertySetRelated(CurrentId, View, CurrentLevel);
                        }
                        else if (CurrentRelationship.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId)
                        {
                            Relationships = getObjectClassRelated(CurrentId, View, CurrentLevel);
                        }
                        else if (CurrentRelationship.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId)
                        {
                            Relationships = getNodeTypeRelated(CurrentId, View, CurrentLevel);
                        }

                        foreach (CswNbtViewRelationship R in from CswNbtViewRelationship _R in Relationships orderby _R.SecondName select _R)
                        {
                            R.Parent = CurrentRelationship;

                            string Label = String.Empty;
                            if (R.PropOwner == CswEnumNbtViewPropOwnerType.First)
                            {
                                Label = R.SecondName + " (by " + R.PropName + ")";
                            }
                            else if (R.PropOwner == CswEnumNbtViewPropOwnerType.Second)
                            {
                                Label = R.SecondName + " (by " + R.SecondName + "'s " + R.PropName + ")";
                            }
                            R.TextLabel = Label;

                            bool contains = ret.Any(existingRel => existingRel.TextLabel == R.TextLabel);    //no dupes
                            if (false == contains)
                            {
                                ret.Add(R);
                            }
                        } // foreach( CswNbtViewRelationship R in Relationships )
                    }
                }
            }
            return(ret);
        } // getViewChildOptions()
        public override void update()
        {
            CswTableUpdate jctUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "29311_jctddntp_update", "jct_dd_ntp" );
            DataTable jctTable = jctUpdate.getEmptyTable();

            // Set up Sequence Nodetype
            CswNbtMetaDataObjectClass SequenceOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.DesignSequenceClass );
            CswNbtMetaDataNodeType SequenceNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeTypeNew( new CswNbtWcfMetaDataModel.NodeType( SequenceOC )
                {
                    NodeTypeName = "Design Sequence",
                    Category = "Design",
                    IconFileName = "wrench.png"
                } );
            //SequenceNT.addNameTemplateText( CswNbtObjClassDesignSequence.PropertyName.Name );
            SequenceNT._DataRow["nametemplate"] = CswNbtMetaData.TemplateTextToTemplateValue( SequenceNT.getNodeTypeProps(), CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassDesignSequence.PropertyName.Name ) );

            Int32 TabId = SequenceNT.getFirstNodeTypeTab().TabId;

            CswNbtMetaDataNodeTypeProp SeqNameNTP = SequenceNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDesignSequence.PropertyName.Name );
            CswNbtMetaDataNodeTypeProp SeqNextValueNTP = SequenceNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDesignSequence.PropertyName.NextValue );
            CswNbtMetaDataNodeTypeProp SeqPadNTP = SequenceNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDesignSequence.PropertyName.Pad );
            CswNbtMetaDataNodeTypeProp SeqPostNTP = SequenceNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDesignSequence.PropertyName.Post );
            CswNbtMetaDataNodeTypeProp SeqPreNTP = SequenceNT.getNodeTypePropByObjectClassProp( CswNbtObjClassDesignSequence.PropertyName.Pre );

            // Edit Layout
            SeqNameNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId, DisplayRow: 1, DisplayColumn: 1 );
            SeqPreNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId, DisplayRow: 2, DisplayColumn: 1 );
            SeqPostNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId, DisplayRow: 3, DisplayColumn: 1 );
            SeqPadNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId, DisplayRow: 4, DisplayColumn: 1 );
            SeqNextValueNTP.updateLayout( CswEnumNbtLayoutType.Edit, true, TabId, DisplayRow: 5, DisplayColumn: 1 );

            // Add Layout
            SeqNameNTP.updateLayout( CswEnumNbtLayoutType.Add, false, Int32.MinValue, DisplayRow: 1, DisplayColumn: 1 );
            SeqPreNTP.updateLayout( CswEnumNbtLayoutType.Add, false, Int32.MinValue, DisplayRow: 2, DisplayColumn: 1 );
            SeqPostNTP.updateLayout( CswEnumNbtLayoutType.Add, false, Int32.MinValue, DisplayRow: 3, DisplayColumn: 1 );
            SeqPadNTP.updateLayout( CswEnumNbtLayoutType.Add, false, Int32.MinValue, DisplayRow: 4, DisplayColumn: 1 );
            SeqNextValueNTP.removeFromLayout( CswEnumNbtLayoutType.Add );

            // Populate nodes
            // Very important that this happens BEFORE we map to the nodetypes table, or else we'll end up duplicating rows!
            Dictionary<Int32, CswNbtObjClassDesignSequence> SequenceNodeMap = new Dictionary<int, CswNbtObjClassDesignSequence>();
            CswTableSelect SequencesTableSelect = _CswNbtSchemaModTrnsctn.makeCswTableSelect( "29311_sequencetable_select", "sequences" );
            DataTable SequencesTable = SequencesTableSelect.getTable();
            foreach( DataRow SeqRow in SequencesTable.Rows )
            {
                CswNbtObjClassDesignSequence node = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( SequenceNT.NodeTypeId, OverrideUniqueValidation: true, OnAfterMakeNode: delegate( CswNbtNode NewNode )
                    {
                        CswNbtObjClassDesignSequence NewSeqNode = NewNode;
                        NewSeqNode.Name.Text = SeqRow["sequencename"].ToString();
                        NewSeqNode.Pad.Value = CswConvert.ToInt32( SeqRow["pad"] );
                        NewSeqNode.Post.Text = SeqRow["post"].ToString();
                        NewSeqNode.Pre.Text = SeqRow["prep"].ToString();
                    } );
                node.RelationalId = new CswPrimaryKey( "sequences", CswConvert.ToInt32( SeqRow["sequenceid"] ) );
                node.postChanges( false );
                SequenceNodeMap.Add( node.RelationalId.PrimaryKey, node );
            }

            // Here's where the extra special super-secret magic comes in

            //SequenceNT.TableName = "sequences";
            SequenceNT._DataRow["tablename"] = "sequences";

            _addJctRow( jctTable, SeqNameNTP, SequenceNT.TableName, "sequencename" );
            _addJctRow( jctTable, SeqPadNTP, SequenceNT.TableName, "pad" );
            _addJctRow( jctTable, SeqPostNTP, SequenceNT.TableName, "post" );
            _addJctRow( jctTable, SeqPreNTP, SequenceNT.TableName, "prep" );
            jctUpdate.update( jctTable );

            // Set up existing relationships to sequences
            Dictionary<Int32, CswNbtObjClassDesignSequence> SequenceValueMap = new Dictionary<Int32, CswNbtObjClassDesignSequence>();
            string Sql = @"select n.nodeid, r.sequenceid
                             from nodetype_props p
                             join nodetypes t on p.nodetypeid = t.nodetypeid
                             join nodes n on t.nodetypeid = n.nodetypeid
                             join nodetype_props r on n.relationalid = r.nodetypepropid
                            where p.propname = 'Sequence' and t.nodetypename like 'Design%'";
            CswArbitrarySelect ExistingSequenceIdSelect = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect( "getExistingSequenceIds", Sql );
            DataTable ExistingSequenceIdTable = ExistingSequenceIdSelect.getTable();
            foreach( DataRow row in ExistingSequenceIdTable.Rows )
            {
                Int32 thisSeqId = CswConvert.ToInt32( row["sequenceid"] );
                if( Int32.MinValue != thisSeqId && SequenceNodeMap.ContainsKey( thisSeqId ) )
                {
                    SequenceValueMap.Add( CswConvert.ToInt32( row["nodeid"] ), SequenceNodeMap[thisSeqId] );
                }
            }

            foreach( CswEnumNbtFieldType ft in new CswEnumNbtFieldType[] { CswEnumNbtFieldType.Barcode, CswEnumNbtFieldType.Sequence } )
            {
                CswNbtMetaDataNodeType PropNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( CswNbtObjClassDesignNodeTypeProp.getNodeTypeName( ft ) );
                //CswNbtFieldTypeRuleSequence Rule = (CswNbtFieldTypeRuleSequence) _CswNbtSchemaModTrnsctn.MetaData.getFieldTypeRule( ft );
                //CswNbtFieldTypeAttribute SequenceAttribute = Rule.getAttributes().FirstOrDefault( a => a.Name == CswEnumNbtPropertyAttributeName.Sequence );
                CswNbtMetaDataNodeTypeProp SequenceNTP = PropNT.getNodeTypeProp( CswEnumNbtPropertyAttributeName.Sequence );
                SequenceNTP.SetFKDeprecated( CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), SequenceOC.ObjectClassId );

                CswNbtViewId ViewId = SequenceNTP.DesignNode.AttributeProperty[CswNbtFieldTypeRuleRelationship.AttributeName.View].AsViewReference.ViewId;
                CswNbtView View = _CswNbtSchemaModTrnsctn.ViewSelect.restoreView( ViewId );
                CswNbtFieldTypeRuleDefaultImpl.setDefaultView( _CswNbtSchemaModTrnsctn.MetaData, SequenceNTP.DesignNode, View, CswEnumNbtViewRelatedIdType.ObjectClassId.ToString(), SequenceOC.ObjectClassId, false );

                foreach( CswNbtObjClassDesignNodeTypeProp PropNode in PropNT.getNodes( false, true ) )
                {
                    if( SequenceValueMap.ContainsKey( PropNode.NodeId.PrimaryKey ) )
                    {
                        CswNbtObjClassDesignSequence SeqNode = SequenceValueMap[PropNode.NodeId.PrimaryKey];
                        if( null != SeqNode )
                        {
                            PropNode.Node.Properties[SequenceNTP].AsRelationship.RelatedNodeId = SeqNode.NodeId;
                            PropNode.postChanges( false );
                        }
                    }
                }
            } // foreach( CswEnumNbtFieldType ft in new CswEnumNbtFieldType[] {CswEnumNbtFieldType.Barcode, CswEnumNbtFieldType.Sequence} )

        } // update()
Esempio n. 6
0
        protected void _populatePropsCollection(CswNbtViewRelationship relationship, CswNbtView TempView, Collection <CswNbtViewProperty> Props,
                                                HashSet <string> seenProps, bool UseMetaName = false, bool overrideFirst = false, bool DoCheck = true)
        {
            CswEnumNbtViewRelatedIdType type;
            Int32 Id;

            if (relationship.PropOwner == CswEnumNbtViewPropOwnerType.First && Int32.MinValue != relationship.FirstId && false == overrideFirst)
            {
                type = relationship.FirstType;
                Id   = relationship.FirstId;
            }
            else
            {
                type = relationship.SecondType;
                Id   = relationship.SecondId;
            }

            if (type.Equals(CswEnumNbtViewRelatedIdType.NodeTypeId))
            {
                CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(Id);
                if (null != NodeType)
                {
                    Collection <CswNbtViewProperty> props = _getProps(NodeType, TempView, seenProps, relationship, DoCheck);

                    foreach (CswNbtViewProperty vp in props)
                    {
                        if (UseMetaName)
                        {
                            vp.TextLabel = NodeType.NodeTypeName + "'s " + vp.MetaDataProp.PropName;
                        }
                        if (false == DoCheck && false == seenProps.Contains(vp.TextLabel) || DoCheck)
                        {
                            seenProps.Add(vp.TextLabel);
                            Props.Add(vp);
                        }
                    }
                }
            }
            else if (type.Equals(CswEnumNbtViewRelatedIdType.ObjectClassId))
            {
                CswNbtMetaDataObjectClass ObjClass = _CswNbtResources.MetaData.getObjectClass(Id);
                if (null != ObjClass)
                {
                    Collection <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, relationship, DoCheck);

                    foreach (CswNbtViewProperty vp in props)
                    {
                        if (UseMetaName)
                        {
                            vp.TextLabel = ObjClass.ObjectClass.Value + "'s " + vp.MetaDataProp.PropName;
                        }
                        Props.Add(vp);
                    }
                }
            }
            else if (type.Equals(CswEnumNbtViewRelatedIdType.PropertySetId))
            {
                CswNbtMetaDataPropertySet PropSet = _CswNbtResources.MetaData.getPropertySet(Id);
                if (null != PropSet)
                {
                    foreach (CswNbtMetaDataObjectClass ObjClass in PropSet.getObjectClasses())
                    {
                        Collection <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, relationship, DoCheck);

                        foreach (CswNbtViewProperty vp in props)
                        {
                            if (UseMetaName)
                            {
                                vp.TextLabel = ObjClass.ObjectClass.Value + "'s " + vp.MetaDataProp.PropName;
                            }
                            Props.Add(vp);
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        protected Collection <CswNbtViewProperty> _getProps(CswNbtMetaDataNodeType NodeType, CswNbtView TempView, HashSet <string> seenProps, CswNbtViewRelationship Relationship, bool DoCheck = true)
        {
            Collection <CswNbtViewProperty> Props = new Collection <CswNbtViewProperty>();

            foreach (CswNbtMetaDataNodeTypeProp ntp in NodeType.getNodeTypeProps().OrderBy(Prop => Prop.PropName))
            {
                if (ntp.getFieldTypeRule().SearchAllowed ||
                    ntp.getFieldTypeValue() == CswEnumNbtFieldType.Button && false == ntp.IsSaveProp)
                {
                    CswNbtViewProperty viewProp = TempView.AddViewProperty(Relationship, ntp);
                    if (false == DoCheck)
                    {
                        Props.Add(viewProp);
                    }
                    else if (false == seenProps.Contains(viewProp.TextLabel))
                    {
                        seenProps.Add(viewProp.TextLabel);
                        Props.Add(viewProp);
                    }
                }
            }
            return(Props);
        }
Esempio n. 8
0
        public override void update()
        {
            CswNbtMetaDataObjectClass     MailReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportGroupClass);
            CswNbtObjClassMailReportGroup DemoMailReports   = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportGroupOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
            {
                CswNbtObjClassMailReportGroup DemoMailReportNode = NewNode;
                DemoMailReportNode.IsDemo    = true;
                DemoMailReportNode.Name.Text = "Demo Mail Reports";
            });
            CswNbtMetaDataObjectClass MailReportOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportClass);

            foreach (CswNbtObjClassMailReport MailReportNode in MailReportOC.getNodes(false, false, false, true))
            {
                if (MailReportNode.IsDemo)
                {
                    MailReportNode.MailReportGroup.RelatedNodeId = DemoMailReports.NodeId;
                    MailReportNode.postChanges(false);
                }
            }
            CswNbtMetaDataObjectClass MailReportGroupPermissionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.MailReportGroupPermissionClass);
            CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.RoleClass);

            foreach (CswNbtObjClassRole RoleNode in RoleOC.getNodes(false, false, false, true))
            {
                if (RoleNode.Administrator.Checked == CswEnumTristate.True)
                {
                    CswNbtObjClassMailReportGroupPermission DemoMailReportGroupPerm = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportGroupPermissionOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        CswNbtObjClassMailReportGroupPermission DemoMailReportPermNode = NewNode;
                        DemoMailReportPermNode.Role.RelatedNodeId            = RoleNode.NodeId;
                        DemoMailReportPermNode.ApplyToAllWorkUnits.Checked   = CswEnumTristate.True;
                        DemoMailReportPermNode.PermissionGroup.RelatedNodeId = DemoMailReports.NodeId;
                        DemoMailReportPermNode.View.Checked = CswEnumTristate.True;
                        DemoMailReportPermNode.Edit.Checked = CswEnumTristate.True;
                    });
                }
            }
            CswNbtObjClassMailReportGroup DefaultMailReportGroup = null;

            foreach (CswNbtObjClassMailReportGroup MailReportGroupNode in MailReportGroupOC.getNodes(false, false, false, true))
            {
                if (MailReportGroupNode.Name.Text == "Default Mail Report Group")
                {
                    DefaultMailReportGroup = MailReportGroupNode;
                }
            }
            CswNbtView MyExpiringContainersView = _CswNbtSchemaModTrnsctn.restoreView("My Expiring Containers");

            if (null != MyExpiringContainersView && null != DefaultMailReportGroup)
            {
                CswNbtObjClassMailReport MyExpiringContainersReport = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(MailReportOC.FirstNodeType.NodeTypeId, delegate(CswNbtNode NewNode)
                {
                    CswNbtObjClassMailReport MyExpiringContainersReportNode = NewNode;
                    MyExpiringContainersReportNode.Name.Text   = "My Expiring Containers";
                    MyExpiringContainersReportNode.Type.Value  = CswNbtObjClassMailReport.TypeOptionView;
                    MyExpiringContainersReportNode.Event.Value = "Edit";
                    MyExpiringContainersReportNode.MailReportGroup.RelatedNodeId = DefaultMailReportGroup.NodeId;
                    MyExpiringContainersReportNode.Message.Text    = "The following containers will be expiring soon: ";
                    MyExpiringContainersReportNode.Enabled.Checked = CswEnumTristate.False;
                    CswNbtView MyExpContMRView = _CswNbtSchemaModTrnsctn.makeView();
                    MyExpContMRView.saveNew("My Expiring Containers", CswEnumNbtViewVisibility.Hidden, CopyViewId: MyExpiringContainersView.ViewId.get());
                    MyExpiringContainersReportNode.ReportView.ViewId = MyExpContMRView.ViewId;
                    CswRateInterval DailyRate = _CswNbtSchemaModTrnsctn.makeRateInterval();
                    DailyRate.setHourly(24, DateTime.Today);
                    MyExpiringContainersReportNode.DueDateInterval.RateInterval = DailyRate;
                });
            }
        }
        public override void update()
        {
            // CISPro Report Group (created in CswUpdateSchema_02H_28562C) should only be accessible to CISPro roles

            CswNbtMetaDataObjectClass ReportGroupOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupClass );
            CswNbtMetaDataObjectClass PermissionOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.ReportGroupPermissionClass );
            CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RoleClass );

            CswNbtMetaDataObjectClassProp GroupNameOCP = ReportGroupOC.getObjectClassProp( CswNbtObjClassReportGroup.PropertyName.Name );
            CswNbtMetaDataObjectClassProp PermissionGroupOCP = PermissionOC.getObjectClassProp( CswNbtObjClassReportGroupPermission.PropertyName.PermissionGroup );
            CswNbtMetaDataObjectClassProp RoleNameOCP = RoleOC.getObjectClassProp( CswNbtObjClassRole.PropertyName.Name );

            // Delete existing (default) permissions
            CswNbtView View = _CswNbtSchemaModTrnsctn.makeView();
            CswNbtViewRelationship Rel1 = View.AddViewRelationship( ReportGroupOC, false );
            View.AddViewPropertyAndFilter( Rel1, GroupNameOCP, Value: "CISPro Report Group", FilterMode: CswEnumNbtFilterMode.Equals );
            CswNbtViewRelationship Rel2 = View.AddViewRelationship( Rel1, CswEnumNbtViewPropOwnerType.Second, PermissionGroupOCP, false );

            ICswNbtTree results = _CswNbtSchemaModTrnsctn.getTreeFromView( View, true );
            CswNbtObjClassReportGroup CISProGroup = null;
            for( Int32 g = 0; g < results.getChildNodeCount(); g++ )
            {
                results.goToNthChild( g );

                CISProGroup = results.getNodeForCurrentPosition();
                for( Int32 p = 0; p < results.getChildNodeCount(); p++ )
                {
                    results.goToNthChild( p );

                    CswNbtNode PermNode = results.getNodeForCurrentPosition();
                    PermNode.delete( false, true );

                    results.goToParentNode();
                }

                results.goToParentNode();
            } // for( Int32 g = 0; g < results.getChildNodeCount(); g++ )

            if( null != CISProGroup )
            {
                // Get all cispro roles
                CswNbtView rolesView = _CswNbtSchemaModTrnsctn.makeView();
                CswNbtViewRelationship parent = rolesView.AddViewRelationship( RoleOC, false );
                rolesView.AddViewPropertyAndFilter( parent,
                                                    MetaDataProp: RoleNameOCP,
                                                    SubFieldName: CswEnumNbtSubFieldName.Text,
                                                    FilterMode: CswEnumNbtFilterMode.Contains,
                                                    Value: "cispro" );
                rolesView.AddViewPropertyAndFilter( parent,
                                                    Conjunction: CswEnumNbtFilterConjunction.Or,
                                                    MetaDataProp: RoleNameOCP,
                                                    SubFieldName: CswEnumNbtSubFieldName.Text,
                                                    FilterMode: CswEnumNbtFilterMode.Equals,
                                                    Value: "Administrator" );
                rolesView.AddViewPropertyAndFilter( parent,
                                                    Conjunction: CswEnumNbtFilterConjunction.Or,
                                                    MetaDataProp: RoleNameOCP,
                                                    SubFieldName: CswEnumNbtSubFieldName.Text,
                                                    FilterMode: CswEnumNbtFilterMode.Equals,
                                                    Value: CswNbtObjClassRole.ChemSWAdminRoleName );

                ICswNbtTree rolesTree = _CswNbtSchemaModTrnsctn.getTreeFromView( rolesView, true );
                Collection<CswPrimaryKey> CISProRoleIds = new Collection<CswPrimaryKey>();
                for( int i = 0; i < rolesTree.getChildNodeCount(); i++ )
                {
                    rolesTree.goToNthChild( i );
                    CISProRoleIds.Add( rolesTree.getNodeIdForCurrentPosition() );
                    rolesTree.goToParentNode();
                }

                // Grant permission to all cispro roles
                CswNbtMetaDataNodeType PermissionNT = PermissionOC.FirstNodeType;
                if( null != PermissionNT )
                {
                    foreach( CswPrimaryKey RoleId in CISProRoleIds )
                    {
                        _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( PermissionNT.NodeTypeId, delegate( CswNbtNode NewNode )
                            {
                                CswNbtPropertySetPermission NewPermission = NewNode;
                                NewPermission.ApplyToAllRoles.Checked = CswEnumTristate.False;
                                NewPermission.ApplyToAllWorkUnits.Checked = CswEnumTristate.True;
                                NewPermission.PermissionGroup.RelatedNodeId = CISProGroup.NodeId;
                                NewPermission.View.Checked = CswEnumTristate.True;
                                NewPermission.Edit.Checked = CswEnumTristate.True;
                                NewPermission.Role.RelatedNodeId = RoleId;
                            } );
                    }
                }
            } // if( null != CISProGroup )

        } // update()
Esempio n. 10
0
        public CswNbtWebServiceGrid(CswNbtResources CswNbtResources, CswNbtView View, bool ForReport, CswNbtNodeKey ParentNodeKey = null)
        {
            _CswNbtResources = CswNbtResources;
            _View            = View;
            _ForReport       = ForReport;

            if (_View.ViewMode != CswEnumNbtViewRenderingMode.Grid)
            {
                throw new CswDniException(CswEnumErrorType.Error, "Cannot create a grid using a view type of " + _View.ViewMode, "Cannot create a grid view if the view is not a grid.");
            }

            _ParentNodeKey = ParentNodeKey;

            Collection <CswNbtViewRelationship> FirstLevelRelationships = new Collection <CswNbtViewRelationship>();

            if (null != _ParentNodeKey && _View.Visibility == CswEnumNbtViewVisibility.Property)
            {
                foreach (CswNbtViewRelationship Relationship in _View.Root.ChildRelationships.SelectMany(NodeRelationship => NodeRelationship.ChildRelationships))
                {
                    FirstLevelRelationships.Add(Relationship);
                }
            }
            else
            {
                FirstLevelRelationships = _View.Root.ChildRelationships;
            }
            // Case 21778
            // Maybe do this in Permit someday; however, the meaning of Edit and Delete is very specific in this context:
            // only evaluating visibility of the option to edit or delete root nodetypes of a view
            foreach (CswNbtViewRelationship Relationship in FirstLevelRelationships)
            {
                Collection <CswNbtMetaDataNodeType> FirstLevelNodeTypes = new Collection <CswNbtMetaDataNodeType>();

                if (Relationship.SecondId != Int32.MinValue)
                {
                    if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.PropertySetId)
                    {
                        foreach (CswNbtMetaDataObjectClass SecondOc in _CswNbtResources.MetaData.getObjectClassesByPropertySetId(Relationship.SecondId))
                        {
                            if (null != SecondOc)
                            {
                                foreach (CswNbtMetaDataNodeType NT in SecondOc.getNodeTypes())
                                {
                                    FirstLevelNodeTypes.Add(NT);
                                }
                            }
                        }
                    }
                    else if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.ObjectClassId)
                    {
                        CswNbtMetaDataObjectClass SecondOc = _CswNbtResources.MetaData.getObjectClass(Relationship.SecondId);
                        if (null != SecondOc)
                        {
                            foreach (CswNbtMetaDataNodeType NT in SecondOc.getNodeTypes())
                            {
                                FirstLevelNodeTypes.Add(NT);
                            }
                        }
                    }
                    else if (Relationship.SecondType == CswEnumNbtViewRelatedIdType.NodeTypeId)
                    {
                        CswNbtMetaDataNodeType SecondNt = _CswNbtResources.MetaData.getNodeType(Relationship.SecondId);
                        if (null != SecondNt)
                        {
                            FirstLevelNodeTypes.Add(SecondNt);
                        }
                    }
                } // if( Relationship.SecondId != Int32.MinValue )

                foreach (CswNbtMetaDataNodeType NodeType in FirstLevelNodeTypes)
                {
                    _NodeTypePermission Permission = new _NodeTypePermission(NodeType, _CswNbtResources);
                    _ActionEnabled = false == _ForReport &&
                                     (_ActionEnabled || Permission.CanView || Permission.CanDelete || Permission.CanDelete);
                    if (false == _Permissions.ContainsKey(NodeType.FirstVersionNodeTypeId))
                    {
                        _Permissions.Add(NodeType.FirstVersionNodeTypeId, Permission);
                    }
                }
            }

            _CswNbtGrid  = new CswNbtGrid(_CswNbtResources);
            _PropsInGrid = new Collection <CswViewBuilderProp>();
            _getGridProperties(_View.Root.ChildRelationships, _PropsInGrid);
        } //ctor
Esempio n. 11
0
        }//Update()


        private void makeRequestGridView( CswNbtView GridView, CswNbtMetaDataNodeType RootNt )
        {
            CswNbtMetaDataObjectClass RequestOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RequestClass );
            CswNbtMetaDataNodeType RequestNt = RequestOc.getLatestVersionNodeTypes().FirstOrDefault();
            if( null == RequestNt )
            {
                CswStatusMessage Msg = new CswStatusMessage
                {
                    AppType = AppType.SchemUpdt,
                    ContentType = ContentType.Error
                };
                Msg.Attributes.Add( ChemSW.Log.LegalAttribute.exoteric_message, "Could not get a Request NodeType" );
                _CswNbtSchemaModTrnsctn.CswLogger.send( Msg );
            }
            else
            {

                CswNbtMetaDataNodeTypeProp NameNtp =
                    RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Name.ToString() );
                CswNbtMetaDataNodeTypeProp SubmittedDateNtp =
                    RequestNt.getNodeTypePropByObjectClassProp(
                        CswNbtObjClassRequest.PropertyName.SubmittedDate.ToString() );
                CswNbtMetaDataNodeTypeProp CompletedDateNtpNtp =
                    RequestNt.getNodeTypePropByObjectClassProp(
                        CswNbtObjClassRequest.PropertyName.CompletedDate.ToString() );
                CswNbtMetaDataNodeTypeProp RequestorNtp =
                    RequestNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequest.PropertyName.Requestor.ToString() );

                CswNbtMetaDataObjectClass RequestItemOc =
                    _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(
                        CswNbtMetaDataObjectClass.NbtObjectClass.RequestItemClass );
                CswNbtMetaDataNodeType RequestItemNt = RequestItemOc.getLatestVersionNodeTypes().FirstOrDefault();
                if( null == RequestItemNt )
                {
                    CswStatusMessage Msg = new CswStatusMessage
                    {
                        AppType = AppType.SchemUpdt,
                        ContentType = ContentType.Error
                    };
                    Msg.Attributes.Add( ChemSW.Log.LegalAttribute.exoteric_message, "Could not get a Request Item NodeType" );
                    _CswNbtSchemaModTrnsctn.CswLogger.send( Msg );

                }
                else
                {
                    CswNbtMetaDataNodeTypeProp TypeNtp =
                        RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Type );
                    CswNbtMetaDataNodeTypeProp StatusNtp =
                        RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Status );
                    CswNbtMetaDataNodeTypeProp ExternalOrderNoNtp =
                        RequestItemNt.getNodeTypePropByObjectClassProp(
                            CswNbtObjClassRequestItem.PropertyName.ExternalOrderNumber );
                    CswNbtMetaDataNodeTypeProp NumberNtp =
                        RequestItemNt.getNodeTypePropByObjectClassProp( CswNbtObjClassRequestItem.PropertyName.Number );

                    GridView.Root.ChildRelationships.Clear();
                    GridView.ViewName = RootNt.NodeTypeName + " Requested Items";
                    GridView.Visibility = NbtViewVisibility.Property;
                    GridView.ViewMode = NbtViewRenderingMode.Grid;
                    GridView.Category = "Requests";

                    CswNbtViewRelationship RootRel = GridView.AddViewRelationship( RootNt, false );

                    CswNbtMetaDataNodeTypeProp RelationshipToRootNtp = null;
                    switch( RootNt.getObjectClass().ObjectClass )
                    {
                        case CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass:
                            RelationshipToRootNtp =
                                RequestItemNt.getNodeTypePropByObjectClassProp(
                                    CswNbtObjClassRequestItem.PropertyName.Material );
                            break;

                        case CswNbtMetaDataObjectClass.NbtObjectClass.ContainerClass:
                            RelationshipToRootNtp =
                                RequestItemNt.getNodeTypePropByObjectClassProp(
                                    CswNbtObjClassRequestItem.PropertyName.Container );
                            break;
                        default:
                            CswStatusMessage Msg = new CswStatusMessage
                                                       {
                                                           AppType = AppType.SchemUpdt,
                                                           ContentType = ContentType.Error
                                                       };
                            Msg.Attributes.Add( ChemSW.Log.LegalAttribute.exoteric_message, "Request grids of this type are not supported." );
                            _CswNbtSchemaModTrnsctn.CswLogger.send( Msg );
                            break;
                    }
                    if( null != RelationshipToRootNtp )
                    {
                        CswNbtViewRelationship RequestItemRel = GridView.AddViewRelationship( RootRel,
                                                                                             NbtViewPropOwnerType.Second,
                                                                                             RelationshipToRootNtp,
                                                                                             false );
                        CswNbtMetaDataNodeTypeProp RiRequestNtp =
                            RequestItemNt.getNodeTypePropByObjectClassProp(
                                CswNbtObjClassRequestItem.PropertyName.Request );
                        CswNbtViewRelationship RequestRel = GridView.AddViewRelationship( RequestItemRel,
                                                                                         NbtViewPropOwnerType.First,
                                                                                         RiRequestNtp, false );

                        CswNbtViewProperty CompletedVp = GridView.AddViewProperty( RequestRel, CompletedDateNtpNtp );
                        CompletedVp.Order = 3;
                        CompletedVp.SortBy = true;
                        CompletedVp.SortMethod = NbtViewPropertySortMethod.Descending;

                        CswNbtViewProperty SubmittedVp = GridView.AddViewProperty( RequestRel, SubmittedDateNtp );
                        SubmittedVp.Order = 2;
                        SubmittedVp.SortMethod = NbtViewPropertySortMethod.Descending;

                        CswNbtViewProperty NameVp = GridView.AddViewProperty( RequestRel, NameNtp );
                        NameVp.Order = 1;
                        NameVp.SortMethod = NbtViewPropertySortMethod.Descending;

                        CswNbtViewProperty RequestorVp = GridView.AddViewProperty( RequestRel, RequestorNtp );
                        RequestorVp.Order = 4;

                        CswNbtViewProperty TypeVp = GridView.AddViewProperty( RequestItemRel, TypeNtp );
                        TypeVp.Order = 5;
                        CswNbtViewProperty NumberVp = GridView.AddViewProperty( RequestItemRel, NumberNtp );
                        NumberVp.Order = 6;
                        CswNbtViewProperty OrderVp = GridView.AddViewProperty( RequestItemRel, ExternalOrderNoNtp );
                        OrderVp.Order = 7;
                        CswNbtViewProperty StatusVp = GridView.AddViewProperty( RequestItemRel, StatusNtp );
                        StatusVp.Order = 8;

                        GridView.save();
                    }
                }
            }
        }
        public CswViewVisibilityEditor(CswNbtResources CswNbtResources)
        {
            _CswNbtResources = CswNbtResources;

            EnsureChildControls();

            // View Visibility DropDown
            _NewViewVisibilityDropDown.Items.Clear();
            _NewViewVisibilityDropDown.Items.Add(new ListItem("User:"******"Role:", CswEnumNbtViewVisibility.Role.ToString()));
                _NewViewVisibilityDropDown.Items.Add(new ListItem("Everyone", CswEnumNbtViewVisibility.Global.ToString()));

                // Role dropdown
                CswNbtMetaDataObjectClass Role_ObjectClass = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.RoleClass);

                CswNbtView             RoleView         = new CswNbtView(_CswNbtResources);
                CswNbtViewRelationship RoleRelationship = RoleView.AddViewRelationship(Role_ObjectClass, true);

                string PriorVisibilityValue = _NewViewVisibilityRoleDropDown.SelectedValue;
                _NewViewVisibilityRoleDropDown.Items.Clear();
                ICswNbtTree RoleTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, RoleView, true, false, false);

                RoleTree.goToRoot();
                //RoleTree.goToNthChild(0);
                for (int n = 0; n < RoleTree.getChildNodeCount(); n++)
                {
                    RoleTree.goToNthChild(n);
                    CswNbtNode Node = RoleTree.getNodeForCurrentPosition();
                    _NewViewVisibilityRoleDropDown.Items.Add(new ListItem(Node.NodeName, Node.NodeId.PrimaryKey.ToString()));
                    RoleTree.goToParentNode();
                }
                if (_NewViewVisibilityRoleDropDown.Items.FindByValue(PriorVisibilityValue) != null)
                {
                    _NewViewVisibilityRoleDropDown.SelectedValue = PriorVisibilityValue;
                }
            }

            // User dropdown
            CswNbtMetaDataObjectClass User_ObjectClass = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.UserClass);

            CswNbtView             UserView         = new CswNbtView(_CswNbtResources);
            CswNbtViewRelationship UserRelationship = UserView.AddViewRelationship(User_ObjectClass, true);

            if (!_CswNbtResources.CurrentNbtUser.IsAdministrator())
            {
                UserRelationship.NodeIdsToFilterIn.Add(_CswNbtResources.CurrentUser.UserId);
            }

            string PriorUserVisibilityValue = _NewViewVisibilityUserDropDown.SelectedValue;

            _NewViewVisibilityUserDropDown.Items.Clear();
            ICswNbtTree UserTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, UserView, true, false, false);

            UserTree.goToRoot();
            //UserTree.goToNthChild(0);
            for (int n = 0; n < UserTree.getChildNodeCount(); n++)
            {
                UserTree.goToNthChild(n);
                CswNbtNode Node = UserTree.getNodeForCurrentPosition();
                _NewViewVisibilityUserDropDown.Items.Add(new ListItem(Node.NodeName, Node.NodeId.PrimaryKey.ToString()));
                UserTree.goToParentNode();
            }
            if (_NewViewVisibilityUserDropDown.Items.FindByValue(PriorUserVisibilityValue) != null)
            {
                _NewViewVisibilityUserDropDown.SelectedValue = PriorUserVisibilityValue;
            }
        }
        public override void update()
        {
            CswNbtMetaDataObjectClass InventoryGroupOc           = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupClass);
            CswNbtMetaDataObjectClass InventoryGroupPermissionOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.InventoryGroupPermissionClass);
            CswNbtMetaDataNodeType    InvGrpNT     = InventoryGroupOc.FirstNodeType;
            CswNbtMetaDataNodeType    InvGrpPermNT = InventoryGroupPermissionOc.FirstNodeType;

            //1: Get Default Inventory Group
            CswNbtObjClassInventoryGroup DefaultInventoryGroup = null;
            CswNbtObjClassInventoryGroup CISProInventoryGroup  = null;

            foreach (CswNbtObjClassInventoryGroup InventoryGroup in InventoryGroupOc.getNodes(true, false, false, true))
            {
                if (InventoryGroup.Name.Text == "Default Inventory Group")
                {
                    DefaultInventoryGroup = InventoryGroup;
                }
                else if (InventoryGroup.Name.Text == "CISPro")
                {
                    CISProInventoryGroup = InventoryGroup;
                }
            }
            if (null == DefaultInventoryGroup)
            {
                DefaultInventoryGroup = InventoryGroupOc.getNodes(true, false, false, true).FirstOrDefault();
            }
            if (null == DefaultInventoryGroup)
            {
                if (null != InvGrpNT)
                {
                    DefaultInventoryGroup = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(InvGrpNT.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        CswNbtObjClassInventoryGroup DefInvGrp = NewNode;
                        DefInvGrp.Name.Text = "Default Inventory Group";
                    });
                }
            }

            if (null != DefaultInventoryGroup) //At this point DefaultInventoryGroup should never be null
            {
                //2: Set Default Value to Default Inventory Group, if no DefaultValue is present
                CswNbtMetaDataObjectClass LocationOc = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.LocationClass);
                foreach (CswNbtMetaDataNodeType LocationNt in LocationOc.getNodeTypes())
                {
                    CswNbtMetaDataNodeTypeProp InventoryGroupNtp = LocationNt.getNodeTypePropByObjectClassProp(CswNbtObjClassLocation.PropertyName.InventoryGroup);
                    if (false == InventoryGroupNtp.HasDefaultValue())
                    {
                        InventoryGroupNtp.DefaultValue.AsRelationship.RelatedNodeId = DefaultInventoryGroup.NodeId;
                    }
                }

                //3: Update any null Inventory Group values with Default
                foreach (CswNbtObjClassLocation Location in LocationOc.getNodes(true, false, false, true))
                {
                    if (false == CswTools.IsPrimaryKey(Location.InventoryGroup.RelatedNodeId))
                    {
                        Location.InventoryGroup.RelatedNodeId = DefaultInventoryGroup.NodeId;
                        Location.postChanges(ForceUpdate: false);
                    }
                }

                //4: Ensure at least one Inventory Group Permission exists
                CswNbtMetaDataNodeType IgPermNt = InventoryGroupPermissionOc.getLatestVersionNodeTypes().FirstOrDefault();
                if (null != IgPermNt)
                {
                    try
                    {
                        CswNbtObjClassInventoryGroupPermission DefaultPermission = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId(IgPermNt.NodeTypeId, delegate(CswNbtNode NewNode)
                        {
                            CswNbtObjClassInventoryGroupPermission WildCardPerm = NewNode;
                            WildCardPerm.PermissionGroup.RelatedNodeId          = DefaultInventoryGroup.NodeId;
                            WildCardPerm.ApplyToAllRoles.Checked     = CswEnumTristate.True;
                            WildCardPerm.ApplyToAllWorkUnits.Checked = CswEnumTristate.True;
                            WildCardPerm.Dispense.Checked            = CswEnumTristate.True;
                            WildCardPerm.Dispose.Checked             = CswEnumTristate.True;
                            WildCardPerm.Edit.Checked      = CswEnumTristate.True;
                            WildCardPerm.Request.Checked   = CswEnumTristate.True;
                            WildCardPerm.Undispose.Checked = CswEnumTristate.True;
                        });
                    }
                    catch (CswDniException ex) //If we're here, it's because this wildcard already exists
                    {
                        if (ex.ErrorType != CswEnumErrorType.Warning)
                        {
                            throw;
                        }
                    }
                }

                //5: Get rid of deprecated CISPro Inventory Group and move their permissions over to Default Inventory Group
                if (null != CISProInventoryGroup)
                {
                    CswNbtMetaDataObjectClass WorkUnitOc      = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass(CswEnumNbtObjectClass.WorkUnitClass);
                    CswNbtObjClassWorkUnit    DefaultWorkUnit = null;
                    foreach (CswNbtObjClassWorkUnit WorkUnit in WorkUnitOc.getNodes(true, false, false, true))
                    {
                        if (WorkUnit.Name.Text == "Default Work Unit")
                        {
                            DefaultWorkUnit = WorkUnit;
                        }
                    }
                    if (null != DefaultWorkUnit)
                    {
                        foreach (CswNbtObjClassInventoryGroupPermission InventoryGroupPerm in InventoryGroupPermissionOc.getNodes(true, false, false, true))
                        {
                            if (InventoryGroupPerm.PermissionGroup.RelatedNodeId == CISProInventoryGroup.NodeId)
                            {
                                try
                                {
                                    InventoryGroupPerm.PermissionGroup.RelatedNodeId = DefaultInventoryGroup.NodeId;
                                    InventoryGroupPerm.PermissionGroup.SyncGestalt();
                                    InventoryGroupPerm.WorkUnit.RelatedNodeId = DefaultWorkUnit.NodeId;
                                    InventoryGroupPerm.WorkUnit.SyncGestalt();
                                    InventoryGroupPerm.postChanges(false);
                                }
                                catch (CswDniException) //If we're here, it's because the Permission already exists on Default Inventory Group
                                {
                                    InventoryGroupPerm.Node.delete(true, true);
                                }
                            }
                        }
                    }
                    CISProInventoryGroup.Node.delete(true, true);
                }
            }
            //6: Fix Inventory Group Permissions grid prop
            if (null != InvGrpNT && null != InvGrpPermNT)
            {
                CswNbtMetaDataNodeTypeProp PermissionsNTP = InvGrpNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroup.PropertyName.Permissions);

                CswNbtView InvGrpPermView = _CswNbtSchemaModTrnsctn.restoreView(PermissionsNTP.ViewId);
                if (null == InvGrpPermView)
                {
                    InvGrpPermView          = _CswNbtSchemaModTrnsctn.makeSafeView("Permissions", CswEnumNbtViewVisibility.Property);
                    InvGrpPermView.ViewMode = CswEnumNbtViewRenderingMode.Grid;
                }
                InvGrpPermView.Root.ChildRelationships.Clear();

                CswNbtMetaDataNodeTypeProp PermissionGroupNTP = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.PermissionGroup);
                CswNbtMetaDataNodeTypeProp RoleNTP            = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Role);
                CswNbtMetaDataNodeTypeProp WorkUnitNTP        = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.WorkUnit);
                CswNbtMetaDataNodeTypeProp ViewNTP            = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.View);
                CswNbtMetaDataNodeTypeProp EditNTP            = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Edit);
                CswNbtMetaDataNodeTypeProp DispenseNTP        = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Dispense);
                CswNbtMetaDataNodeTypeProp RequestNTP         = InvGrpPermNT.getNodeTypePropByObjectClassProp(CswNbtObjClassInventoryGroupPermission.PropertyName.Request);

                CswNbtViewRelationship RootRel = InvGrpPermView.AddViewRelationship(InvGrpNT, false);
                CswNbtViewRelationship PermRel = InvGrpPermView.AddViewRelationship(RootRel, CswEnumNbtViewPropOwnerType.Second, PermissionGroupNTP, true);
                InvGrpPermView.AddViewProperty(PermRel, PermissionGroupNTP, 1);
                InvGrpPermView.AddViewProperty(PermRel, RoleNTP, 2);
                InvGrpPermView.AddViewProperty(PermRel, WorkUnitNTP, 3);
                InvGrpPermView.AddViewProperty(PermRel, ViewNTP, 4);
                InvGrpPermView.AddViewProperty(PermRel, EditNTP, 5);
                InvGrpPermView.AddViewProperty(PermRel, DispenseNTP, 6);
                InvGrpPermView.AddViewProperty(PermRel, RequestNTP, 7);
                InvGrpPermView.save();

                PermissionsNTP.ViewId = InvGrpPermView.ViewId;
            }
        }
        public CswCommaDelimitedString getContainerLocationIds(CswNbtResources _CswNbtResources, CswNbtView ContainerLocationsView)
        {
            CswCommaDelimitedString ContainerLocations     = new CswCommaDelimitedString();
            ICswNbtTree             ContainerLocationsTree = _CswNbtResources.Trees.getTreeFromView(ContainerLocationsView, false, false, false);
            int ContainerLocationCount = ContainerLocationsTree.getChildNodeCount();

            for (int i = 0; i < ContainerLocationCount; i++)
            {
                ContainerLocationsTree.goToNthChild(i);
                ContainerLocations.Add(ContainerLocationsTree.getNodeIdForCurrentPosition().ToString());
                ContainerLocationsTree.goToParentNode();
            }
            return(ContainerLocations);
        }
        private static void _recurseForRelatedNTs(CswNbtResources NbtResources, CswNbtExplorerReturn Return, int NodeTypeId, int level, string OwnerIdStr)
        {
            if (false == SEEN.Contains(NodeTypeId) && level <= MAX_DEPTH)
            {
                CswNbtMetaDataNodeType NodeType     = NbtResources.MetaData.getNodeType(NodeTypeId);
                CswNbtView             View         = new CswNbtView(NbtResources);
                CswNbtViewRelationship Relationship = View.AddViewRelationship(NodeType, false);

                CswNbtViewEditorRule ViewRule = new CswNbtViewEditorRuleAddViewLevels(NbtResources, new CswNbtViewEditorData()
                {
                    CurrentView = View
                });

                string DisplayName  = string.Empty;
                string TargetIdStr  = string.Empty;
                string IconFilename = string.Empty;
                string Id           = string.Empty;

                Random rand = new Random(DateTime.Now.Millisecond);
                Collection <CswNbtViewRelationship> RelatedTypes = ViewRule.getViewChildRelationshipOptions(View, Relationship.ArbitraryId);
                foreach (CswNbtViewRelationship Related in RelatedTypes)
                {
                    bool WasNT           = false;
                    bool ObjClassAllowed = false;
                    DisplayName = Related.TextLabel;
                    string MetaDataName = string.Empty;

                    int id = (Related.PropOwner == CswEnumNbtViewPropOwnerType.First && Related.FirstId != Int32.MinValue ? Related.FirstId : Related.SecondId);
                    CswEnumNbtViewRelatedIdType IdType = (Related.PropOwner == CswEnumNbtViewPropOwnerType.First && Related.FirstId != Int32.MinValue ? Related.FirstType : Related.SecondType);

                    if (Related.PropOwner == CswEnumNbtViewPropOwnerType.Second)
                    {
                        if (IdType == CswEnumNbtViewRelatedIdType.NodeTypeId)
                        {
                            CswNbtMetaDataNodeType RelatedNodeType = NbtResources.MetaData.getNodeType(id);
                            IconFilename = RelatedNodeType.IconFileName;
                            TargetIdStr  = OwnerIdStr + "_NT_" + RelatedNodeType.NodeTypeId + "_" + rand.Next();
                            Id           = "NT_" + RelatedNodeType.NodeTypeId;

                            CswNbtMetaDataObjectClass ObjClass = RelatedNodeType.getObjectClass();
                            ObjClassAllowed = FilterVal.Contains("OC_" + ObjClass.ObjectClassId);
                            MetaDataName    = RelatedNodeType.NodeTypeName;

                            WasNT = true;
                        }
                        else if (IdType == CswEnumNbtViewRelatedIdType.ObjectClassId)
                        {
                            CswNbtMetaDataObjectClass RelatedObjClass = NbtResources.MetaData.getObjectClass(id);
                            IconFilename = RelatedObjClass.IconFileName;
                            TargetIdStr  = OwnerIdStr + "_OC_" + RelatedObjClass.ObjectClassId + "_" + rand.Next();
                            Id           = "OC_" + RelatedObjClass.ObjectClassId;
                            MetaDataName = RelatedObjClass.ObjectClassName;
                        }

                        if (((IdType == CswEnumNbtViewRelatedIdType.NodeTypeId && FilterVal.Contains("NT_" + id) || ObjClassAllowed)) ||
                            (IdType == CswEnumNbtViewRelatedIdType.ObjectClassId && FilterVal.Contains("OC_" + id)))
                        {
                            _addToGraph(Return, DisplayName, OwnerIdStr, TargetIdStr, IconFilename, level, "Category", Id, MetaDataName, Related.PropId);

                            if (level + 1 <= MAX_DEPTH && WasNT)
                            {
                                _recurseForRelatedNTs(NbtResources, Return, id, level + 1, TargetIdStr);
                            }
                        }
                    }
                }
            }
        }
        public override void update()
        {

            //get field types used for this class
            CswNbtMetaDataFieldType memoFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Memo );
            CswNbtMetaDataFieldType logicalFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Logical );
            CswNbtMetaDataFieldType textFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Text );

            #region CREATE THE REGULATORY LIST OC AND IT'S PROPS
            CswNbtMetaDataObjectClass regulatoryListOC = _CswNbtSchemaModTrnsctn.createObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.RegulatoryListClass, "doc.png", true, true );
            CswNbtMetaDataObjectClassProp nameOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( new CswNbtWcfMetaDataModel.ObjectClassProp( regulatoryListOC )
            {
                PropName = CswNbtObjClassRegulatoryList.PropertyName.Name,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Text,
                IsFk = false,
                IsRequired = true,
                IsUnique = true
            } );

            CswNbtMetaDataObjectClassProp casNumbersOCP = _CswNbtSchemaModTrnsctn.createObjectClassProp( new CswNbtWcfMetaDataModel.ObjectClassProp( regulatoryListOC )
            {
                PropName = CswNbtObjClassRegulatoryList.PropertyName.CASNumbers,
                FieldType = CswNbtMetaDataFieldType.NbtFieldType.Memo,
                IsFk = false,
                IsRequired = true
            } );
            #endregion

            #region CREATE THE REGULATORY LIST NODETYPE
            CswNbtMetaDataNodeType regulatoryListNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( regulatoryListOC.ObjectClassId, "Regulatory List", "Materials" );
            regulatoryListNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( CswNbtObjClassRegulatoryList.PropertyName.Name ) ); //set display name
            CswNbtMetaDataNodeTypeProp casNosNTP = regulatoryListNT.getNodeTypePropByObjectClassProp( CswNbtObjClassRegulatoryList.PropertyName.CASNumbers );
            casNosNTP.HelpText = "The CASNos property should be a comma delimited set of CASNos in this regulatory list. Example: \"CASNo1,CASNo2,CASNo3\"";
            #endregion

            #region CREATE REGULATORY LISTS VIEW

            CswNbtObjClassRole cisProAdminRole = _CswNbtSchemaModTrnsctn.Nodes.makeRoleNodeFromRoleName( "CISPro_Admin" );
            if( null != cisProAdminRole )
            {
                CswNbtView regListsView = _CswNbtSchemaModTrnsctn.makeNewView( "Regulatory Lists", NbtViewVisibility.Role, cisProAdminRole.NodeId );
                regListsView.SetViewMode( NbtViewRenderingMode.Tree );
                regListsView.Category = "CISPro Configuration";
                CswNbtViewRelationship parent = regListsView.AddViewRelationship( regulatoryListOC, false );
                regListsView.save();
            }

            #endregion

            #region ADD REGULATORY LIST NODETYPE PERMISSIONS TO CISPro_Admin

            if( null != cisProAdminRole )
            {
                _CswNbtSchemaModTrnsctn.Permit.set( CswNbtPermit.NodeTypePermission.View, regulatoryListNT, cisProAdminRole, true );
                _CswNbtSchemaModTrnsctn.Permit.set( CswNbtPermit.NodeTypePermission.Create, regulatoryListNT, cisProAdminRole, true );
                _CswNbtSchemaModTrnsctn.Permit.set( CswNbtPermit.NodeTypePermission.Edit, regulatoryListNT, cisProAdminRole, true );
                _CswNbtSchemaModTrnsctn.Permit.set( CswNbtPermit.NodeTypePermission.Delete, regulatoryListNT, cisProAdminRole, true );
            }

            #endregion

        }//Update()
Esempio n. 17
0
 public ICswNbtTree getOpenCartTree(CswNbtView CartView)
 {
     return(_CswNbtResources.Trees.getTreeFromView(CartView, false, false, false));
 }
Esempio n. 18
0
        public override void update()
        {
            CswNbtMetaDataNodeType LabSafetyChecklist = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Lab Safety Checklist (demo)" );
            CswNbtMetaDataNodeType LabSafetyGroup = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Lab Safety Group (demo)" );
            CswNbtMetaDataNodeType LabSafetyTarget = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Lab Safety (demo)" );

            if( null != LabSafetyChecklist && null != LabSafetyGroup && null != LabSafetyTarget )
            {
                CswNbtMetaDataNodeTypeTab SchedulesTab = LabSafetyGroup.getNodeTypeTab( "Schedules" );
                if( null == SchedulesTab )
                {
                    CswNbtMetaDataNodeType GeneratorNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( CswNbtObjClassGenerator.InspectionGeneratorNodeTypeName );
                    if( null != GeneratorNt )
                    {
                        SchedulesTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( LabSafetyGroup, " Schedules", 2 );
                        CswNbtMetaDataNodeTypeProp SchedulesNtp = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( LabSafetyGroup, CswEnumNbtFieldType.Grid, "Schedules", SchedulesTab.TabId );
                        CswNbtView SchedulesView = _CswNbtSchemaModTrnsctn.makeSafeView( LabSafetyTarget.NodeTypeName + " Schedules", CswEnumNbtViewVisibility.Property );
                        SchedulesView.NbtViewMode = CswEnumNbtViewRenderingMode.Grid.ToString();

                        CswNbtViewRelationship Rel = SchedulesView.AddViewRelationship( LabSafetyGroup, IncludeDefaultFilters: true );
                        CswNbtViewRelationship SchedRel = SchedulesView.AddViewRelationship( Rel, CswEnumNbtViewPropOwnerType.Second, GeneratorNt.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.Owner ), IncludeDefaultFilters: true );
                        SchedulesView.AddViewProperty( SchedRel, GeneratorNt.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.Description ) );
                        SchedulesView.AddViewProperty( SchedRel, GeneratorNt.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.NextDueDate ) );
                        SchedulesView.AddViewProperty( SchedRel, GeneratorNt.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.RunStatus ) );
                        SchedulesView.AddViewProperty( SchedRel, GeneratorNt.getNodeTypePropByObjectClassProp( CswNbtObjClassGenerator.PropertyName.RunTime ) );

                        SchedulesView.save();
                        SchedulesNtp.ViewId = SchedulesView.ViewId;
                        SchedulesNtp.removeFromLayout( CswEnumNbtLayoutType.Add );
                    }
                }
                CswNbtView GroupView = _CswNbtSchemaModTrnsctn.restoreView( "Groups, Lab Safety Checklist: Lab Safety (demo)" );
                if( null != GroupView )
                {
                    CswNbtView View = GroupView;
                    GroupView.Root.eachRelationship( Relationship =>
                    {
                        if( Relationship.SecondMetaDataDefinitionObject().UniqueId == LabSafetyTarget.NodeTypeId )
                        {
                            View.AddViewRelationship( Relationship, CswEnumNbtViewPropOwnerType.Second, LabSafetyChecklist.getNodeTypePropByObjectClassProp( CswNbtObjClassInspectionDesign.PropertyName.Target ), false );
                        }

                    }, null );  
                    GroupView.save();
                }

                CswNbtView DoomedView1 = _CswNbtSchemaModTrnsctn.restoreView( "Inspections, Lab Safety Checklist: Lab Safety (demo)" );
                if( null != DoomedView1 )
                {
                    DoomedView1.Delete();
                }
                
                CswNbtView DoomedView2 = _CswNbtSchemaModTrnsctn.restoreView( "Scheduling, Lab Safety Checklist: Lab Safety (demo)" );
                if( null != DoomedView2 )
                {
                    DoomedView2.Delete();
                }





            }
            

        } // update()
Esempio n. 19
0
        protected Collection <CswNbtViewProperty> _getProps(CswNbtMetaDataObjectClass ObjClass, CswNbtView TempView, HashSet <string> seenProps, CswNbtViewRelationship Relationship, bool DoCheck = true)
        {
            Collection <CswNbtViewProperty> Props = new Collection <CswNbtViewProperty>();

            if (null != ObjClass)
            {
                foreach (CswNbtMetaDataNodeType NodeType in ObjClass.getNodeTypes())
                {
                    foreach (CswNbtViewProperty prop in _getProps(NodeType, TempView, seenProps, Relationship, DoCheck))
                    {
                        Props.Add(prop);
                    }
                }
            }
            return(Props);
        }
Esempio n. 20
0
 public void reInitSystemView(CswEnumNbtSystemViewName ViewName)
 {
     SystemView = _initView(ViewName, true);
 }
Esempio n. 21
0
        protected void _getFilterProps(CswNbtViewEditorData Return)
        {
            string     viewStr  = CurrentView.ToString();
            CswNbtView TempView = new CswNbtView(_CswNbtResources);

            TempView.LoadXml(viewStr);
            HashSet <string> seenProps = new HashSet <string>();

            CswNbtViewRelationship Relationship = (CswNbtViewRelationship)TempView.FindViewNodeByArbitraryId(Request.Relationship.ArbitraryId);

            if (null != Relationship)
            {
                foreach (CswNbtViewProperty viewProp in Relationship.Properties.Where(p => CswEnumNbtFieldType.Button != p.FieldType))
                {
                    seenProps.Add(viewProp.TextLabel);
                    Return.Step4.Properties.Add(viewProp);
                }

                if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.PropertySetId))
                {
                    CswNbtMetaDataPropertySet PropSet = _CswNbtResources.MetaData.getPropertySet(Relationship.SecondId);
                    if (null != PropSet)
                    {
                        foreach (CswNbtMetaDataObjectClass ObjClass in PropSet.getObjectClasses())
                        {
                            IEnumerable <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType);;
                            foreach (CswNbtViewProperty vp in props)
                            {
                                Return.Step4.Properties.Add(vp);
                            }
                        }
                    }
                }
                else if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.ObjectClassId))
                {
                    CswNbtMetaDataObjectClass ObjClass = _CswNbtResources.MetaData.getObjectClass(Relationship.SecondId);
                    if (null != ObjClass)
                    {
                        IEnumerable <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType);;
                        foreach (CswNbtViewProperty vp in props)
                        {
                            Return.Step4.Properties.Add(vp);
                        }
                    }
                }
                else if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.NodeTypeId))
                {
                    CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(Relationship.SecondId);
                    if (null != NodeType)
                    {
                        IEnumerable <CswNbtViewProperty> props = _getProps(NodeType, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType);
                        foreach (CswNbtViewProperty vp in props)
                        {
                            Return.Step4.Properties.Add(vp);
                        }
                    }
                }
            }

            Collection <CswNbtViewProperty> sortedProps = new Collection <CswNbtViewProperty>();

            foreach (CswNbtViewProperty prop in Return.Step4.Properties.OrderBy(vp => vp.TextLabel))
            {
                sortedProps.Add(prop);
            }
            Return.Step4.Properties = sortedProps;
            Return.Step4.ViewJson   = TempView.ToJson().ToString();
        }
Esempio n. 22
0
        } // getMergeInfo()

        private void _addMergeNodes(MergeInfoData ret, CswPrimaryKey NodeId1, CswPrimaryKey NodeId2, CswNbtMetaDataNodeTypeProp NodeReferenceProp = null)
        {
            CswNbtNode Node1 = _CswNbtResources.Nodes[NodeId1];
            CswNbtNode Node2 = _CswNbtResources.Nodes[NodeId2];

            if (null != Node1 && null != Node2)
            {
                // Make sure there isn't already a node pair for these nodes
                if (false == ret.NodePairs.Any(np => (np.Node1Id == Node1.NodeId.ToString() && np.Node2Id == Node2.NodeId.ToString()) ||
                                               (np.Node1Id == Node2.NodeId.ToString() && np.Node2Id == Node1.NodeId.ToString())))
                {
                    CswNbtMetaDataNodeType Node1NT = Node1.getNodeType();

                    MergeInfoData.MergeInfoNodePair NodePair = new MergeInfoData.MergeInfoNodePair();
                    NodePair.NodeReferences = new Collection <MergeInfoData.MergeInfoNodeReference>();
                    NodePair.NodeTypeName   = Node1NT.NodeTypeName;
                    NodePair.Node1Id        = Node1.NodeId.ToString();
                    NodePair.Node2Id        = Node2.NodeId.ToString();
                    NodePair.Node1Name      = Node1.NodeName;
                    NodePair.Node2Name      = Node2.NodeName;
                    if (null != NodeReferenceProp)
                    {
                        NodePair.NodeReferencePropId = NodeReferenceProp.PropId;
                    }
                    else
                    {
                        NodePair.NodeReferencePropId = Int32.MinValue;
                    }

                    foreach (CswNbtNodePropWrapper Prop1 in Node1.Properties.Where(p => (null == NodeReferenceProp || p.NodeTypePropId != NodeReferenceProp.PropId)))
                    {
                        CswNbtNodePropWrapper Prop2 = Node2.Properties[Prop1.NodeTypePropId];
                        if (null == Prop2 || Prop1.Gestalt != Prop2.Gestalt)
                        {
                            NodePair.Properties.Add(new MergeInfoData.MergeInfoProperty()
                            {
                                PropName       = Prop1.PropName,
                                NodeTypePropId = Prop1.NodeTypePropId,
                                Node1Value     = Prop1.Gestalt,
                                Node2Value     = Prop2.Gestalt
                            });
                        } // if( null == Prop2 || Prop1.Gestalt != Prop2.Gestalt )
                    }     // foreach( CswNbtNodePropWrapper Prop1 in Node1.Properties )
                    ret.NodePairs.Add(NodePair);


                    // If two nodes that formerly related to each of node1 and node2 now relate to the merged target,
                    // and they now would be compound unique violations, we have to merge those too.

                    // First, find references that point to the merged nodes
                    foreach (CswNbtMetaDataNodeTypeProp thisProp in _CswNbtResources.MetaData.getNodeTypeProps().Where(p => p.IsNodeReference() && p.FkMatches(Node1.getNodeType())))
                    {
                        // Find unique key sets for nodes using this reference that point to either node1 or node2
                        Dictionary <CswDelimitedString, CswPrimaryKey> Node1UniqueKeysDict = _getUniqueKeysDict(NodePair, Node1, thisProp);
                        Dictionary <CswDelimitedString, CswPrimaryKey> Node2UniqueKeysDict = _getUniqueKeysDict(NodePair, Node2, thisProp);

                        // Look for redundant keys to indicate a potential unique violation
                        foreach (CswDelimitedString key in Node1UniqueKeysDict.Keys)
                        {
                            if (Node2UniqueKeysDict.ContainsKey(key))
                            {
                                // unique violation!  gotta merge these too.
                                _addMergeNodes(ret, Node1UniqueKeysDict[key], Node2UniqueKeysDict[key], thisProp);
                            }
                        } // foreach( CswDelimitedString key in Node1UniqueKeysDict.Keys )
                    }     // foreach( CswNbtMetaDataNodeTypeProp thisProp in _CswNbtResources.MetaData.getNodeTypeProps().Where( p => p.IsNodeReference() ) )

                    // Special case: UserSelect properties
                    if (Node1NT.getObjectClassValue() == CswEnumNbtObjectClass.UserClass)
                    {
                        foreach (CswNbtMetaDataNodeTypeProp thisUserSelProp in _CswNbtResources.MetaData.getNodeTypeProps(CswEnumNbtFieldType.UserSelect))
                        {
                            // Create a view of nodes that point to either merged node via this reference
                            CswNbtView             view = new CswNbtView(_CswNbtResources);
                            CswNbtViewRelationship rel1 = view.AddViewRelationship(thisUserSelProp.getNodeType(), false);
                            view.AddViewPropertyAndFilter(rel1,
                                                          thisUserSelProp,
                                                          Conjunction: CswEnumNbtFilterConjunction.And,
                                                          FilterMode: CswEnumNbtFilterMode.Contains,
                                                          Value: Node1.NodeId.PrimaryKey.ToString());
                            view.AddViewPropertyAndFilter(rel1,
                                                          thisUserSelProp,
                                                          Conjunction: CswEnumNbtFilterConjunction.Or,
                                                          FilterMode: CswEnumNbtFilterMode.Contains,
                                                          Value: Node2.NodeId.PrimaryKey.ToString());

                            // Add nodes with matching UserSelect properties to NodeReferences for later updating
                            ICswNbtTree tree = _CswNbtResources.Trees.getTreeFromView(view, RequireViewPermissions: false, IncludeHiddenNodes: true, IncludeSystemNodes: true);
                            for (Int32 c = 0; c < tree.getChildNodeCount(); c++)
                            {
                                tree.goToNthChild(c);
                                NodePair.NodeReferences.Add(new MergeInfoData.MergeInfoNodeReference()
                                {
                                    NodeId         = tree.getNodeIdForCurrentPosition().ToString(),
                                    NodeTypePropId = thisUserSelProp.PropId
                                });
                                tree.goToParentNode();
                            } // for( Int32 c = 0; c < tree.getChildNodeCount(); c++ )
                        }     // foreach( CswNbtMetaDataNodeTypeProp thisUserSelProp in _CswNbtResources.MetaData.getNodeTypeProps( CswEnumNbtFieldType.UserSelect ) )
                    }         // if( Node1NT.getObjectClassValue() == CswEnumNbtObjectClass.UserClass )
                }             // if(false == ret.NodePairs.Any( ... ))
            }                 // if( null != Node1 && null != Node2 )
        }                     // _addMergeNodes()
Esempio n. 23
0
        private Collection <CswNbtViewRelationship> getPropertySetRelated(Int32 PropertySetId, CswNbtView View, Int32 Level)
        {
            Collection <CswNbtViewRelationship> Relationships = new Collection <CswNbtViewRelationship>();

            // If we're doing a grid, we can only pick things in which the provided nodetype has a relationship to,
            // rather than things that are related to the provided nodetype.
            // If this is a property grid, then the above rule does not apply to the first level.
            bool Restrict = (View.ViewMode == CswEnumNbtViewRenderingMode.Grid || View.ViewMode == CswEnumNbtViewRenderingMode.Table) &&
                            (View.Visibility != CswEnumNbtViewVisibility.Property || Level >= 2);

            CswNbtMetaDataPropertySet PropertySet = _CswNbtResources.MetaData.getPropertySet(PropertySetId);

            CswStaticSelect RelationshipPropsSelect = _CswNbtResources.makeCswStaticSelect("getRelationsForPropertySetId_select", "getRelationsForPropertySetId");

            RelationshipPropsSelect.S4Parameters.Add("getpropertysetid", new CswStaticParam("getpropertysetid", PropertySetId));
            DataTable RelationshipPropsTable = RelationshipPropsSelect.getTable();

            foreach (DataRow PropRow in RelationshipPropsTable.Rows)
            {
                // Ignore relationships that don't have a target
                if (PropRow["fktype"].ToString() != String.Empty &&
                    PropRow["fkvalue"].ToString() != String.Empty)
                {
                    ICswNbtMetaDataProp ThisProp = null;
                    if (PropRow["proptype"].ToString() == CswEnumNbtViewPropIdType.ObjectClassPropId.ToString())
                    {
                        ThisProp = _CswNbtResources.MetaData.getObjectClassProp(CswConvert.ToInt32(PropRow["propid"]));
                    }
                    else if (PropRow["proptype"].ToString() == CswEnumNbtViewPropIdType.NodeTypePropId.ToString())
                    {
                        ThisProp = _CswNbtResources.MetaData.getNodeTypeProp(CswConvert.ToInt32(PropRow["propid"]));
                    }

                    if (PropRow["propertysetid"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() &&
                        PropRow["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() &&
                        PropRow["fkvalue"].ToString() == PropertySetId.ToString())
                    {
                        // Special case -- relationship to my own set
                        // We need to create two relationships from this
                        CswNbtViewRelationship R1 = View.AddViewRelationship(null, CswEnumNbtViewPropOwnerType.First, ThisProp, false);
                        R1.overrideFirst(PropertySet);
                        R1.overrideSecond(PropertySet);
                        _InsertRelationship(Relationships, R1);

                        if (!Restrict)
                        {
                            CswNbtViewRelationship R2 = View.AddViewRelationship(null, CswEnumNbtViewPropOwnerType.Second, ThisProp, false);
                            R2.overrideFirst(PropertySet);
                            R2.overrideSecond(PropertySet);
                            _InsertRelationship(Relationships, R2);
                        }
                    }
                    else
                    {
                        CswNbtViewRelationship R = null;
                        if (PropRow["propertysetid"].ToString() == PropertySetId.ToString())
                        {
                            // my relation to something else
                            R = View.AddViewRelationship(null, CswEnumNbtViewPropOwnerType.First, ThisProp, false);
                            R.overrideSecond(PropRow["fktype"].ToString(), CswConvert.ToInt32(PropRow["fkvalue"]));
                            R.overrideFirst(PropertySet);
                            _InsertRelationship(Relationships, R);
                        }
                        else if (PropRow["fktype"].ToString() == CswEnumNbtViewRelatedIdType.PropertySetId.ToString() &&
                                 PropRow["fkvalue"].ToString() == PropertySetId.ToString())
                        {
                            if (!Restrict)
                            {
                                // something else's relation to me
                                R = View.AddViewRelationship(null, CswEnumNbtViewPropOwnerType.Second, ThisProp, false);
                                if (PropRow["proptype"].ToString() == CswEnumNbtViewPropIdType.ObjectClassPropId.ToString())
                                {
                                    R.overrideSecond(_CswNbtResources.MetaData.getObjectClass(CswConvert.ToInt32(PropRow["typeid"])));
                                }
                                else
                                {
                                    R.overrideSecond(_CswNbtResources.MetaData.getNodeType(CswConvert.ToInt32(PropRow["typeid"])));
                                }
                                R.overrideFirst(PropertySet);
                                _InsertRelationship(Relationships, R);
                            }
                        }
                        else
                        {
                            throw new CswDniException(CswEnumErrorType.Error, "An unexpected data condition has occurred", "getPropertySetRelated() found a relationship which did not match the original propertysetid");
                        }
                    }
                }
            }

            return(Relationships);
        }
Esempio n. 24
0
        /// <summary>
        /// Create a dictionary of the unique key values of related nodes
        /// As a side effect, also populate MergeInfoData.NodePair.NodeReferences
        /// </summary>
        private Dictionary <CswDelimitedString, CswPrimaryKey> _getUniqueKeysDict(MergeInfoData.MergeInfoNodePair NodePair, CswNbtNode Node, CswNbtMetaDataNodeTypeProp NodeReferenceProp)
        {
            Dictionary <CswDelimitedString, CswPrimaryKey> ret = new Dictionary <CswDelimitedString, CswPrimaryKey>();
            char delimiter = '|';

            // Find unique properties for this reference's nodetype
            IEnumerable <CswNbtMetaDataNodeTypeProp> UniqueProps = NodeReferenceProp.getNodeType().getUniqueProps();

            // Create a view of nodes that point to the target node via this reference
            CswNbtView             view = new CswNbtView(_CswNbtResources);
            CswNbtViewRelationship rel1 = view.AddViewRelationship(Node.getNodeType(), false);

            rel1.NodeIdsToFilterIn.Add(Node.NodeId);
            CswNbtViewRelationship rel2 = view.AddViewRelationship(rel1, CswEnumNbtViewPropOwnerType.Second, NodeReferenceProp, false);

            foreach (CswNbtMetaDataNodeTypeProp uniqueProp in UniqueProps)
            {
                view.AddViewProperty(rel2, uniqueProp);
            }

            // Iterate children and store unique property values in a dictionary key
            ICswNbtTree tree = _CswNbtResources.Trees.getTreeFromView(view, RequireViewPermissions: false, IncludeHiddenNodes: true, IncludeSystemNodes: true);

            if (tree.getChildNodeCount() > 0)
            {
                tree.goToNthChild(0);
                for (Int32 c = 0; c < tree.getChildNodeCount(); c++)
                {
                    tree.goToNthChild(c);
                    CswPrimaryKey thisNodeId = tree.getNodeIdForCurrentPosition();

                    // Populate MergeInfoData.NodePair.NodeReferences while we're here
                    NodePair.NodeReferences.Add(new MergeInfoData.MergeInfoNodeReference()
                    {
                        NodeId         = thisNodeId.ToString(),
                        NodeTypePropId = NodeReferenceProp.PropId
                    });

                    CswDelimitedString key;
                    if (_AllUniqueKeys.ContainsKey(thisNodeId))
                    {
                        // If we've seen this node before, use the existing key but override the merge property
                        // (this will allow us to merge correctly if a nodetype has
                        //  multiple compound unique references that are all involved in the merge)
                        key = _AllUniqueKeys[thisNodeId];
                        for (Int32 u = 0; u < UniqueProps.Count(); u++)
                        {
                            if (UniqueProps.ElementAt(u).PropId == NodeReferenceProp.PropId)
                            {
                                // This value will be equal after the merge
                                key[u] = "[mergeresult]";
                            }
                        } // foreach( CswNbtMetaDataNodeTypeProp uniqueProp in UniqueProps )
                    }     // if( _AllUniqueKeys.ContainsKey( thisNodeId ) )
                    else
                    {
                        // generate a new key
                        key = new CswDelimitedString(delimiter);
                        foreach (CswNbtMetaDataNodeTypeProp uniqueProp in UniqueProps)
                        {
                            CswNbtTreeNodeProp prop = tree.getChildNodePropsOfNode().FirstOrDefault(p => p.NodeTypePropId == uniqueProp.PropId);
                            if (null != prop)
                            {
                                if (prop.NodeTypePropId == NodeReferenceProp.PropId)
                                {
                                    // This value will be equal after the merge
                                    key.Add("[mergeresult]");
                                }
                                else
                                {
                                    key.Add(prop.Gestalt);
                                }
                            }
                            else
                            {
                                key.Add("");
                            }
                        } // foreach( CswNbtMetaDataNodeTypeProp uniqueProp in UniqueProps )
                    }     // if-else( _AllUniqueKeys.ContainsKey( thisNodeId ) )

                    if (key.Count > 0)
                    {
                        ret.Add(key, thisNodeId);
                        _AllUniqueKeys[thisNodeId] = key;
                    }

                    tree.goToParentNode();
                } // for( Int32 c = 0; c < tree.getChildNodeCount(); c++ )
            }     // if( tree.getChildNodeCount() > 0 )
            return(ret);
        }         // _getUniqueKeysDict()
Esempio n. 25
0
 /// <summary>
 /// For loading from XML
 /// </summary>
 public CswNbtViewProperty(CswNbtResources CswNbtResources, CswNbtView View, XmlNode PropNode)
     : base(CswNbtResources, View)
 {
     try
     {
         if (PropNode.Attributes["type"] != null)
         {
             Type = PropNode.Attributes["type"].Value;
         }
         if (PropNode.Attributes["value"] != null)    //backwards compatibility
         {
             if (Type == CswEnumNbtViewPropType.NodeTypePropId)
             {
                 NodeTypePropId = CswConvert.ToInt32(PropNode.Attributes["value"].Value);
             }
             else
             {
                 ObjectClassPropId = CswConvert.ToInt32(PropNode.Attributes["value"].Value);
             }
         }
         if (PropNode.Attributes["nodetypepropid"] != null)
         {
             NodeTypePropId = CswConvert.ToInt32(PropNode.Attributes["nodetypepropid"].Value);
         }
         if (PropNode.Attributes["objectclasspropid"] != null)
         {
             ObjectClassPropId = CswConvert.ToInt32(PropNode.Attributes["objectclasspropid"].Value);
         }
         if (PropNode.Attributes["name"] != null)
         {
             Name = PropNode.Attributes["name"].Value;
         }
         //if( PropNode.Attributes["arbitraryid"] != null )
         //    ArbitraryId = PropNode.Attributes["arbitraryid"].Value;
         if (PropNode.Attributes["sortby"] != null)
         {
             SortBy = Convert.ToBoolean(PropNode.Attributes["sortby"].Value);
         }
         if (PropNode.Attributes["sortmethod"] != null)
         {
             SortMethod = PropNode.Attributes["sortmethod"].Value;
         }
         if (PropNode.Attributes["fieldtype"] != null && PropNode.Attributes["fieldtype"].Value != string.Empty)
         {
             FieldType = CswNbtMetaDataFieldType.getFieldTypeFromString(PropNode.Attributes["fieldtype"].Value);
         }
         if (PropNode.Attributes["order"] != null && PropNode.Attributes["order"].Value != string.Empty)
         {
             Order = CswConvert.ToInt32(PropNode.Attributes["order"].Value);
         }
         if (PropNode.Attributes["width"] != null && PropNode.Attributes["width"].Value != string.Empty)
         {
             Width = CswConvert.ToInt32(PropNode.Attributes["width"].Value);
         }
         if (PropNode.Attributes["showingrid"] != null && PropNode.Attributes["showingrid"].Value != string.Empty)
         {
             ShowInGrid = CswConvert.ToBoolean(PropNode.Attributes["showingrid"].Value);
         }
     }
     catch (Exception ex)
     {
         throw new CswDniException(CswEnumErrorType.Error, "Misconfigured CswViewProperty",
                                   "CswViewProperty.constructor(xmlnode) encountered an invalid attribute value",
                                   ex);
     }
     try
     {
         foreach (XmlNode ChildNode in PropNode.ChildNodes)
         {
             if (ChildNode.Name.ToLower() == CswEnumNbtViewXmlNodeName.Filter.ToString().ToLower())
             {
                 CswNbtViewPropertyFilter Filter = new CswNbtViewPropertyFilter(CswNbtResources, _View, ChildNode);
                 this.addFilter(Filter);
             }
         }
     }
     catch (Exception ex)
     {
         throw new CswDniException(CswEnumErrorType.Error, "Misconfigured CswViewProperty",
                                   "CswViewProperty.constructor(xmlnode) encountered an invalid filter definition",
                                   ex);
     }
 }
Esempio n. 26
0
        }         // _applyMergeChoicesToNode()

        public CswNbtView finishMerge(MergeInfoData Choices)
        {
            CswNbtView view            = new CswNbtView(_CswNbtResources);
            CswNbtNode firstMergedNode = null;

            foreach (MergeInfoData.MergeInfoNodePair nodePair in Choices.NodePairs)
            {
                // Remove the temp node
                CswNbtNode NodeTemp = _CswNbtResources.Nodes[nodePair.NodeTempId];
                if (null != NodeTemp)
                {
                    NodeTemp.delete(DeleteAllRequiredRelatedNodes: false, OverridePermissions: true, ValidateRequiredRelationships: false);
                }

                // Merge Node1 into Node2, and delete Node1
                CswNbtNode Node1 = _CswNbtResources.Nodes[nodePair.Node1Id];
                CswNbtNode Node2 = _CswNbtResources.Nodes[nodePair.Node2Id];
                if (null != Node1 && null != Node2)
                {
                    // Store the first node merged to return
                    if (null == firstMergedNode)
                    {
                        firstMergedNode = Node2;
                    }

                    // Apply the merge to Node2
                    _applyMergeChoicesToNode(Choices, nodePair, Node2);
                    Node2.postChanges(ForceUpdate: false, IsCopy: false, OverrideUniqueValidation: true);

                    // Update any references to point to node2
                    foreach (MergeInfoData.MergeInfoNodeReference Ref in nodePair.NodeReferences)
                    {
                        CswNbtNode refNode = _CswNbtResources.Nodes[Ref.NodeId];
                        if (refNode.Properties[Ref.NodeTypePropId].getFieldTypeValue() == CswEnumNbtFieldType.UserSelect)
                        {
                            // Special case: UserSelect
                            refNode.Properties[Ref.NodeTypePropId].AsUserSelect.RemoveUser(Node1.NodeId);
                            refNode.Properties[Ref.NodeTypePropId].AsUserSelect.AddUser(Node2.NodeId);
                            refNode.Properties[Ref.NodeTypePropId].AsUserSelect.SyncGestalt();
                        }
                        else
                        {
                            // Node Reference
                            refNode.Properties[Ref.NodeTypePropId].AsNodeReference.ReferencedNodeId = Node2.NodeId;
                            refNode.Properties[Ref.NodeTypePropId].AsNodeReference.RefreshNodeName();
                        }
                        refNode.postChanges(ForceUpdate: false, IsCopy: false, OverrideUniqueValidation: true);
                    }

                    // Delete merged node 1
                    Node1.delete(DeleteAllRequiredRelatedNodes: false, OverridePermissions: true, ValidateRequiredRelationships: false);
                } // if( null != Node1 && null != Node2 )
            }     // foreach( MergeInfoData.MergeInfoNodePair nodePair in Choices.NodePairs )

            // Return a view of the first merged node
            if (null != firstMergedNode)
            {
                view = firstMergedNode.getViewOfNode(includeDefaultFilters: false);
            }
            return(view);
        } // finishMerge()
Esempio n. 27
0
        public HMISData getHMISData(HMISData.HMISDataRequest Request)
        {
            HMISData      Data          = new HMISData();
            CswPrimaryKey ControlZoneId = null;

            if (false == string.IsNullOrEmpty(Request.ControlZoneId))
            {
                ControlZoneId = CswConvert.ToPrimaryKey(Request.ControlZoneId);
            }
            else if (false == string.IsNullOrEmpty(Request.ControlZone))
            {
                if (CswTools.IsInteger(Request.ControlZone))
                {
                    ControlZoneId = new CswPrimaryKey("nodes", CswConvert.ToInt32(Request.ControlZone));
                }
                else
                {
                    CswNbtView  ControlZoneView = getControlZonesView(Request.ControlZone);
                    ICswNbtTree ControlZoneTree = _CswNbtResources.Trees.getTreeFromView(ControlZoneView, RequireViewPermissions: false, IncludeSystemNodes: true, IncludeHiddenNodes: true);
                    if (ControlZoneTree.getChildNodeCount() > 0)
                    {
                        ControlZoneTree.goToNthChild(0);
                        ControlZoneId = ControlZoneTree.getNodeIdForCurrentPosition();
                    }
                }
            }

            if (CswTools.IsPrimaryKey(ControlZoneId))
            {
                Data.ControlZone = _CswNbtResources.Nodes.getNodeName(ControlZoneId);

                string HMISSql = @"with loc as (select n.nodeid
                                                  from nodes n
                                                  join nodetypes t on t.nodetypeid = n.nodetypeid
                                                  join object_class oc on t.objectclassid = oc.objectclassid
                                                  join (select j.nodeid, j.field1_fk 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Control Zone'
                                                       ) cz on (cz.nodeid = n.nodeid)
                                                 where oc.objectclass = 'LocationClass'
                                                   and cz.field1_fk = " + ControlZoneId.PrimaryKey + @"
                                               ),
                                        mat as (select n.nodeid, n.nodename materialname, hc.clobdata hazardclasses, sf.gestaltsearch specialflags, ps.field1 physstate
                                                  from nodes n
                                                  join nodetypes t on t.nodetypeid = n.nodetypeid
                                                  join object_class oc on t.objectclassid = oc.objectclassid
                                                  join (select j.nodeid, j.clobdata
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Hazard Classes'
                                                       ) hc on (hc.nodeid = n.nodeid)
                                                  join (select j.nodeid, j.gestaltsearch 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Special Flags'
                                                       ) sf on (sf.nodeid = n.nodeid)
                                                  join (select j.nodeid, j.field1
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Physical State'
                                                       ) ps on (ps.nodeid = n.nodeid)
                                                 where oc.objectclass = 'ChemicalClass'
                                                   and (sf.gestaltsearch is null or sf.gestaltsearch not like '%not reportable%')";
                if (string.IsNullOrEmpty(Request.Class))
                {
                    HMISSql += "   and hc.clobdata is not null";
                }
                else
                {
                    HMISSql += "   and hc.clobdata like '%" + Request.Class + @"%'";
                }
                HMISSql += @"                ),
                                       cont as (select SUM(q.field2_numeric) total_qty_kg, 
                                                       SUM(q.field3_numeric) total_qty_lt, 
                                                       ut.field1 usetype, 
                                                       m.field1_fk materialid
                                                  from nodes n
                                                  join nodetypes t on t.nodetypeid = n.nodetypeid
                                                  join object_class oc on t.objectclassid = oc.objectclassid
                                                  join (select j.nodeid, j.field1_fk 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Location'
                                                       ) l on (l.nodeid = n.nodeid)
                                                  join (select j.nodeid, j.field2_numeric, j.field3_numeric 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Quantity'
                                                       ) q on (q.nodeid = n.nodeid)
                                                  join (select j.nodeid, j.field1 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Use Type'
                                                       ) ut on (ut.nodeid = n.nodeid)
                                                  join (select j.nodeid, j.field1_fk 
                                                          from object_class_props ocp  
                                                          join nodetype_props ntp on ocp.objectclasspropid = ntp.objectclasspropid 
                                                          join jct_nodes_props j on ntp.nodetypepropid = j.nodetypepropid
                                                         where ocp.propname = 'Material'
                                                       ) m on (m.nodeid = n.nodeid)
                                                 where oc.objectclass = 'ContainerClass'
                                                   and ut.field1 is not null
                                                   and l.field1_fk in (select nodeid from loc) 
                                                   and (q.field2_numeric > 0 
                                                     or q.field3_numeric > 0)
                                                 group by ut.field1, m.field1_fk
                                               )
                                   select c.*, mat.hazardclasses, mat.specialflags, mat.materialname, mat.physstate
                                     from cont c
                                     join mat on (c.materialid = mat.nodeid)";
                CswArbitrarySelect HMISSelect = _CswNbtResources.makeCswArbitrarySelect("HMIS_Select", HMISSql);
                DataTable          HMISTable  = HMISSelect.getTable();

                if (string.IsNullOrEmpty(Request.Class))
                {
                    // Get totals for all classes
                    _setFireClasses(ControlZoneId, Data);

                    foreach (DataRow row in HMISTable.Rows)
                    {
                        CswCommaDelimitedString HazardClasses = new CswCommaDelimitedString();
                        HazardClasses.FromString(CswConvert.ToString(row["hazardclasses"]));
                        if (HazardClasses.Contains("FL-1A") || HazardClasses.Contains("FL-1B") || HazardClasses.Contains("FL-1C"))
                        {
                            HazardClasses.Add("FL-Comb");
                        }
                        foreach (String HazardClass in HazardClasses)
                        {
                            HMISData.HMISMaterial HMISMaterial = Data.Materials.FirstOrDefault(EmptyHazardClass => EmptyHazardClass.HazardClass == HazardClass);
                            if (null != HMISMaterial)  //This would only be null if the Material's HazardClass options don't match the Default FireClass nodes
                            {
                                _addQuantityDataToHMISMaterial(HMISMaterial,
                                                               CswConvert.ToString(row["usetype"]),
                                                               CswConvert.ToDouble(row["total_qty_kg"]),
                                                               CswConvert.ToDouble(row["total_qty_lt"]),
                                                               CswConvert.ToString(row["physstate"]),
                                                               new CswPrimaryKey("nodes", CswConvert.ToInt32(row["materialid"])));
                            }
                        }
                    } // foreach( DataRow row in HMISTable )
                }     // if( string.IsNullOrEmpty( Request.Class ) )
                else
                {
                    // Get material information for one class
                    foreach (DataRow row in HMISTable.Rows)
                    {
                        HMISData.HMISMaterial NewMaterial = new HMISData.HMISMaterial
                        {
                            Material    = CswConvert.ToString(row["materialname"]),
                            NodeId      = CswConvert.ToInt32(row["materialid"]),
                            HazardClass = Request.Class
                        };
                        _addQuantityDataToHMISMaterial(NewMaterial,
                                                       CswConvert.ToString(row["usetype"]),
                                                       CswConvert.ToDouble(row["total_qty_kg"]),
                                                       CswConvert.ToDouble(row["total_qty_lt"]),
                                                       CswConvert.ToString(row["physstate"]),
                                                       new CswPrimaryKey("nodes", CswConvert.ToInt32(row["materialid"])));
                        Data.Materials.Add(NewMaterial);
                    }
                } // if-else( string.IsNullOrEmpty( Request.Class ) )
            }     // if( CswTools.IsPrimaryKey( ControlZoneId ) )
            return(Data);
        }
        } //Update()

        private void _addProp( CswNbtView view, CswNbtViewRelationship parent, CswNbtMetaDataObjectClassProp prop, int order )
        {
            CswNbtViewProperty viewProp = view.AddViewProperty( parent, prop, order );
        }
        public override void update()
        {
            Int32 AdminRolePk = Int32.MinValue;
            CswCommaDelimitedString AdminRoles = new CswCommaDelimitedString();

            // Change the visibilily of the 'Roles and Users' view to global
            CswNbtView RolesAndUsersView = _CswNbtSchemaModTrnsctn.restoreView( "Roles and Users" );
            if( null != RolesAndUsersView )
            {
                RolesAndUsersView.SetVisibility( CswEnumNbtViewVisibility.Global, null, null );
                RolesAndUsersView.save();

                // For any roles that aren't Administrator roles, remove any role permissions
                CswNbtMetaDataObjectClass RoleOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswEnumNbtObjectClass.RoleClass );
                foreach( CswNbtObjClassRole RoleNode in RoleOC.getNodes( false, true, false ) )
                {
                    if( CswEnumTristate.True != RoleNode.Administrator.Checked )
                    {
                        foreach( CswEnumNbtNodeTypePermission Permission in CswEnumNbtNodeTypePermission.Members )
                        {
                            RoleNode.NodeTypePermissions.RemoveValue( CswNbtObjClassRole.MakeNodeTypePermissionValue( RoleOC.FirstNodeType.NodeTypeId, Permission ) );
                        }
                        RoleNode.NodeTypePermissions.SyncGestalt();
                        RoleNode.postChanges( false );
                    }
                    else
                    {
                        AdminRoles.Add( CswConvert.ToString( RoleNode.NodeId.PrimaryKey ) );
                    }

                    // We need this because setting the landing page for this Role is a special case
                    if( RoleNode.Name.Text == "Administrator" )
                    {
                        AdminRolePk = RoleNode.NodeId.PrimaryKey;
                    }
                }

                // Redirect Welcome Landingpage items
                CswTableUpdate TableUpdate = _CswNbtSchemaModTrnsctn.makeCswTableUpdate( "updateLandingPageItems_Case28518", "landingpage" );
                DataTable LandingPageDt = TableUpdate.getTable( "where for_roleid in (" + AdminRoles.ToString() + ")" );
                foreach( DataRow CurrentRow in LandingPageDt.Rows )
                {
                    if( CswConvert.ToInt32( CurrentRow["for_roleid"] ) == AdminRolePk )
                    {
                        if( CswConvert.ToString( CurrentRow["to_nodeviewid"] ) == "19" )
                        {
                            CurrentRow["displaytext"] = RolesAndUsersView.ViewName;
                        }
                    }

                    if( CswConvert.ToString( CurrentRow["displaytext"] ) == "Roles and Users" )
                    {
                        CurrentRow["to_nodeviewid"] = RolesAndUsersView.ViewId.get();
                    }

                }

                TableUpdate.update( LandingPageDt );
            }//if( null != RolesAndUsersView )

        }// update()
Esempio n. 30
0
 public void HandleViewEditorFinish(CswNbtView View)
 {
     Master.HandleViewEditorFinish(View);
 }