public override void update()
        {
            CswNbtMetaDataObjectClass UnitOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.UnitOfMeasureClass );
            IEnumerable<CswNbtMetaDataObjectClassProp> OCPropsToUpdate = _CswNbtSchemaModTrnsctn.MetaData.getObjectClassProps( CswNbtMetaDataFieldType.NbtFieldType.Quantity );

            foreach( CswNbtMetaDataObjectClassProp QuantityProp in OCPropsToUpdate )
            {
                _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( QuantityProp, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.isfk, true );
                _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( QuantityProp, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.fktype, NbtViewRelatedIdType.ObjectClassId.ToString() );
                _CswNbtSchemaModTrnsctn.MetaData.UpdateObjectClassProp( QuantityProp, CswNbtMetaDataObjectClassProp.ObjectClassPropAttributes.fkvalue, UnitOC.ObjectClassId );
            }

            IEnumerable<CswNbtMetaDataNodeTypeProp> NTPropsToUpdate = _CswNbtSchemaModTrnsctn.MetaData.getNodeTypeProps( CswNbtMetaDataFieldType.NbtFieldType.Quantity );

            foreach( CswNbtMetaDataNodeTypeProp NodeTypeProp in NTPropsToUpdate )
            {
                CswNbtViewId NewViewId = NodeTypeProp.ViewId;
                CswNbtView UnitView = _CswNbtSchemaModTrnsctn.restoreView( NewViewId );
                UnitView.Root.ChildRelationships.Clear();
                UnitView.ViewName = "CswNbtNodeTypePropQuantity_" + NodeTypeProp.NodeTypeId.ToString();
                UnitView.AddViewRelationship( UnitOC, true );
                UnitView.save();

                NodeTypeProp.ViewId = UnitView.ViewId;
                NodeTypeProp.SetFK( NbtViewRelatedIdType.ObjectClassId.ToString(), UnitOC.ObjectClassId );
            }

        }//Update()
        } // DeleteObjectClass()

        /// <summary>
        /// Set the default value for an object class prop, and cascade the change to all existing NodeTypeProps
        /// </summary>
        /// <param name="ObjectClassProp"></param>
        /// <param name="Value"></param>
        /// <param name="SubFieldName">Optional. Use the default subfield if null.</param>
        ///
        public void SetObjectClassPropDefaultValue(CswNbtMetaDataObjectClassProp ObjectClassProp, object Value, CswEnumNbtSubFieldName SubFieldName = null)
        {
            if (null != ObjectClassProp)
            {
                SubFieldName = SubFieldName ?? ObjectClassProp.getFieldTypeRule().SubFields.Default.Name;
                ObjectClassProp.DefaultValue.SetPropRowValue(SubFieldName, ObjectClassProp.getFieldTypeRule().SubFields[SubFieldName].Column, Value);
                // We're going to regret this day
                ObjectClassProp.DefaultValue.SetPropRowValue(CswEnumNbtSubFieldName.Gestalt, CswEnumNbtPropColumn.Gestalt, Value);

                foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in ObjectClassProp.getNodeTypeProps())
                {
                    //NodeTypeProp.DefaultValue.SetPropRowValue( ObjectClassProp.getFieldTypeRule().SubFields[SubFieldName].Column, Value );
                    //NodeTypeProp.DefaultValue.SetPropRowValue( CswEnumNbtSubFieldName.Gestalt, CswEnumNbtPropColumn.Gestalt, Value );
                    NodeTypeProp.getDefaultValue(true).SetSubFieldValue(SubFieldName, Value);
                }
            }
        }
Example #3
0
        public override void update()
        {

            /* Remove the following NtProps from the add layout of all MaterialNTs */
            CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( NbtObjectClass.MaterialClass );
            foreach (CswNbtMetaDataNodeType MaterialNTs in MaterialOC.getNodeTypes())
            {
                foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in MaterialNTs.getNodeTypeProps())
                {
                    // Property: UNCode
                    if (NodeTypeProp == MaterialNTs.getNodeTypePropByObjectClassProp(CswNbtObjClassMaterial.PropertyName.UNCode))
                    {
                        NodeTypeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                    }

                    // Property: Approved
                    if( NodeTypeProp == MaterialNTs.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterial.PropertyName.ApprovedForReceiving ) )
                    {
                        NodeTypeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                    }

                    // Property: IsTierII
                    if( NodeTypeProp == MaterialNTs.getNodeTypePropByObjectClassProp( CswNbtObjClassMaterial.PropertyName.IsTierII ) )
                    {
                        NodeTypeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                    }

                    // Property: Storage and Handling
                    if( NodeTypeProp.PropName == "Storage and Handling" )
                    {
                        NodeTypeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                    }

                    // Property: Isotope
                    if( NodeTypeProp.PropName == "Isotope" )
                    {
                        NodeTypeProp.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                    }
                }
            }

        } //Update()
        public override void update()
        {
            CswNbtMetaDataNodeType LabSafetyCheckListNt = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Lab Safety Checklist" );
            if(null != LabSafetyCheckListNt)
            {
                CswNbtMetaDataNodeType LabSafetyLatest = LabSafetyCheckListNt.getNodeTypeLatestVersion();
                foreach ( CswNbtMetaDataNodeTypeProp NodeTypeProp in LabSafetyLatest.getNodeTypeProps() )
                {
                    if(NodeTypeProp.getFieldTypeValue() == CswNbtMetaDataFieldType.NbtFieldType.Question)
                    {
                        CswCommaDelimitedString AllowedAnswers = new CswCommaDelimitedString();
                        AllowedAnswers.FromString(NodeTypeProp.ListOptions);
                        if( AllowedAnswers.Contains( "Yes", false ) )
                        {
                            NodeTypeProp.Extended = "Yes";
                        }
                    }
                }
            }

        }//Update()
        /// <summary>
        /// Update the attributes of an Object Class Prop, and cascade changes to existing NodeTypeProps
        /// </summary>
        public void UpdateObjectClassProp(CswNbtMetaDataObjectClassProp ObjectClassProp, CswEnumNbtObjectClassPropAttributes AttributeColumnName, object Value)
        {
            if (AttributeColumnName != CswResources.UnknownEnum)
            {
                string AttributeColumnNameString = CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(AttributeColumnName);
                object DBValue = CswConvert.ToDbVal(Value);
                if (ObjectClassProp._DataRow[AttributeColumnNameString] != DBValue)
                {
                    ObjectClassProp._DataRow[AttributeColumnNameString] = DBValue;
                    if (AttributeColumnName == CswEnumNbtObjectClassPropAttributes.setvalonadd)
                    {
                        ObjectClassProp._DataRow[CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(CswEnumNbtObjectClassPropAttributes.display_col_add)] = DBNull.Value;
                        ObjectClassProp._DataRow[CswNbtMetaDataObjectClassProp.getObjectClassPropAttributesAsString(CswEnumNbtObjectClassPropAttributes.display_row_add)] = DBNull.Value;
                    }
                    _CswNbtMetaDataResources.ObjectClassPropTableUpdate.update(ObjectClassProp._DataRow.Table);

                    foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in ObjectClassProp.getNodeTypeProps())
                    {
                        CswNbtFieldTypeAttribute attr = NodeTypeProp.getFieldTypeRule().getAttributes().FirstOrDefault(a => a.Column == AttributeColumnName);
                        if (null != attr)
                        {
                            CswNbtNodePropWrapper attrProp = NodeTypeProp.DesignNode.AttributeProperty[attr.Name];
                            attrProp.SetSubFieldValue(attrProp.NodeTypeProp.getFieldTypeRule().SubFields.Default, DBValue);
                        }
                        if (AttributeColumnName == CswEnumNbtObjectClassPropAttributes.setvalonadd)
                        {
                            if (CswConvert.ToBoolean(Value))
                            {
                                NodeTypeProp.updateLayout(CswEnumNbtLayoutType.Add, true);
                            }
                            else
                            {
                                NodeTypeProp.removeFromLayout(CswEnumNbtLayoutType.Add);
                            }
                        }
                    }
                }
            }
        } // UpdateObjectClassProp()
Example #6
0
        /// <summary>
        /// Event which fires before the node prop data row is written to the database
        /// </summary>
        /// <param name="IsCopy">True if the update is part of a Copy operation</param>
        public void onBeforeUpdateNodePropRow(CswNbtNode Node, bool IsCopy, bool OverrideUniqueValidation, bool Creating)
        {
            onBeforeUpdateNodePropRowLogic();
            if (false == Node.Properties[this.NodeTypeProp].Empty)  //case 26546 - we allow unique properties to be empty
            {
                //bz # 6686
                if (IsUnique() && wasAnySubFieldModified() && false == OverrideUniqueValidation)
                {
                    CswNbtView CswNbtView = new CswNbtView(_CswNbtResources);
                    CswNbtView.ViewName = "Other Nodes, for Property Uniqueness";

                    CswNbtViewRelationship ViewRel = null;
                    if (NodeTypeProp.IsGlobalUnique())  // BZ 9754
                    {
                        ViewRel = CswNbtView.AddViewRelationship(_CswNbtResources.MetaData.getObjectClassByNodeTypeId(NodeTypeProp.NodeTypeId), false);
                    }
                    else
                    {
                        ViewRel = CswNbtView.AddViewRelationship(NodeTypeProp.getNodeType(), false);
                    }

                    if (NodeId != null)
                    {
                        ViewRel.NodeIdsToFilterOut.Add(NodeId);
                    }

                    //bz# 5959
                    CswNbtViewProperty UniqueValProperty = CswNbtView.AddViewProperty(ViewRel, NodeTypeProp);

                    // BZ 10099
                    this.NodeTypeProp.getFieldTypeRule().AddUniqueFilterToView(CswNbtView, UniqueValProperty, Node.Properties[this.NodeTypeProp]);

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

                    if (NodeTree.getChildNodeCount() > 0)
                    {
                        NodeTree.goToNthChild(0);
                        if (IsCopy && Required && NodeTypeProp.getFieldType().FieldType == CswEnumNbtFieldType.Text)
                        {
                            //CIS-53150 - we want to name mangle things like role names when we try to copy them
                            ((CswNbtNodePropText)this).makeUnique();
                        }
                        else if (false == Required)
                        {
                            //if the prop isn't required, we can just blank it out
                            // BZ 9987 - Clear the value
                            this._CswNbtNodePropData.ClearValue();
                            //this.clearModifiedFlag();
                            this.clearSubFieldModifiedFlags();
                        }
                        else
                        {
                            CswNbtNode CswNbtNode      = NodeTree.getNodeForCurrentPosition();
                            string     EsotericMessage = "Unique constraint violation: The proposed value '" + this.Gestalt + "' ";
                            EsotericMessage += "of property '" + NodeTypeProp.PropName + "' ";
                            EsotericMessage += "for nodeid (" + NodeId.ToString() + ") ";
                            EsotericMessage += "of nodetype '" + NodeTypeProp.getNodeType().NodeTypeName + "' ";
                            EsotericMessage += "is invalid because the same value is already set for node '" + CswNbtNode.NodeName + "' (" + CswNbtNode.NodeId.ToString() + ").";
                            string ExotericMessage = "The " + NodeTypeProp.PropName + " property value must be unique";
                            throw (new CswDniException(CswEnumErrorType.Warning, ExotericMessage, EsotericMessage));
                        }
                    }
                } //if IsUnique
            }     //if empty

            // case 25780 - copy first 512 characters of gestalt to gestaltsearch
            if (_CswNbtNodePropData.wasAnySubFieldModified())
            {
                //string GestaltSearchValue = _CswNbtNodePropData.Gestalt.ToLower();
                //if( GestaltSearchValue.Length > 508 )  // why 508, not 512?  see case 31525.
                //{
                //    GestaltSearchValue = GestaltSearchValue.Substring( 0, 508 );
                //}
                //SetPropRowValue( CswEnumNbtSubFieldName.GestaltSearch, CswEnumNbtPropColumn.GestaltSearch, GestaltSearchValue );

                // We fire this here so that it only fires once per row, not once per subfield.  See case 27241.
                if (null != OnPropChange)
                {
                    OnPropChange(this, Creating);
                }
            }
        } // onBeforeUpdateNodePropRow()
Example #7
0
        private CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign _addNodeTypeInspectionDesignToResponse(CswNbtNode InspectionNode)
        {
            CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign Ret = null;
            if (false == InspectionDesignTypeIds.Contains(InspectionNode.NodeTypeId))
            {
                CswNbtMetaDataNodeType NewInspectionNodeType = InspectionNode.getNodeType();
                InspectionDesignTypeIds.Add(NewInspectionNodeType.NodeTypeId);
                Ret = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign
                {
                    DesignId = NewInspectionNodeType.NodeTypeId,
                    Name     = NewInspectionNodeType.NodeTypeName
                };

                foreach (CswNbtMetaDataNodeTypeTab NodeTypeTab in from CswNbtMetaDataNodeTypeTab _NodeTypeTab
                         in NewInspectionNodeType.getVisibleNodeTypeTabs()
                         orderby _NodeTypeTab.TabOrder
                         select _NodeTypeTab)
                {
                    bool canPropOnAnyOtherTab = (false == _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, NewInspectionNodeType, NodeTypeTab: NodeTypeTab));
                    var  ResponseSection      = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign.Section
                    {
                        Name      = NodeTypeTab.TabName,
                        Order     = NodeTypeTab.TabOrder,
                        SectionId = NodeTypeTab.TabId,
                        ReadOnly  = ((false == _CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, NewInspectionNodeType)) && (false == _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, NewInspectionNodeType, NodeTypeTab: NodeTypeTab)))
                    };

                    IEnumerable <CswNbtMetaDataNodeTypeProp> NodeTypeProps = NodeTypeTab.getNodeTypePropsByDisplayOrder();
                    //Debug.Assert( NodeTypeProps != null, "NodeTypeProps != null" );

                    IEnumerable <CswNbtMetaDataNodeTypeProp> TypeProps = NodeTypeProps as CswNbtMetaDataNodeTypeProp[] ?? NodeTypeProps.ToArray();
                    foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in from CswNbtMetaDataNodeTypeProp _NodeTypeProp
                             in TypeProps
                             where _NodeTypeProp.getFieldTypeValue() != CswEnumNbtFieldType.Question &&
                             _propIsSupportedInMobile(_NodeTypeProp.getFieldTypeValue())
                             select _NodeTypeProp)
                    {
                        ResponseSection.Properties.Add(new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign.SectionProperty
                        {
                            HelpText   = NodeTypeProp.HelpText,
                            Type       = NodeTypeProp.getFieldTypeValue().ToString(),
                            QuestionId = NodeTypeProp.PropId,
                            Text       = NodeTypeProp.PropName,
                            Choices    = null,
                            ReadOnly   = canPropOnAnyOtherTab
                        });
                    }

                    foreach (CswNbtMetaDataNodeTypeProp NodeTypeProp in from CswNbtMetaDataNodeTypeProp _NodeTypeProp
                             in TypeProps
                             orderby _NodeTypeProp.QuestionNo
                             where _NodeTypeProp.getFieldTypeValue() == CswEnumNbtFieldType.Question &&
                             false == _NodeTypeProp.ReadOnly &&
                             _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, _NodeTypeProp, null)
                             select _NodeTypeProp)
                    {
                        string PreferredAnswer = string.Empty;
                        CswCommaDelimitedString PossibleAnswers  = new CswCommaDelimitedString();
                        CswCommaDelimitedString CompliantAnswers = new CswCommaDelimitedString();
                        if (null != NodeTypeProp.DesignNode)
                        {
                            PreferredAnswer = NodeTypeProp.DesignNode.getAttributeValueByName(CswNbtFieldTypeRuleQuestion.AttributeName.PreferredAnswer);
                            PossibleAnswers.FromString(NodeTypeProp.DesignNode.getAttributeValueByName(CswNbtFieldTypeRuleQuestion.AttributeName.PossibleAnswers));
                            CompliantAnswers.FromString(NodeTypeProp.DesignNode.getAttributeValueByName(CswNbtFieldTypeRuleQuestion.AttributeName.CompliantAnswers));
                        }

                        var ResponseProperty = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign.SectionProperty
                        {
                            HelpText   = NodeTypeProp.HelpText,
                            Type       = CswEnumNbtFieldType.Question,
                            QuestionId = NodeTypeProp.PropId,
                            //PreferredAnswer = NodeTypeProp.Extended,
                            PreferredAnswer = PreferredAnswer,
                            Text            = "Question " + NodeTypeProp.QuestionNo + ": " + NodeTypeProp.PropName,
                            ReadOnly        = false
                        };

                        //CswCommaDelimitedString PossibleAnswers = new CswCommaDelimitedString();
                        //PossibleAnswers.FromString( NodeTypeProp.ListOptions );
                        //CswCommaDelimitedString CompliantAnswers = new CswCommaDelimitedString();
                        //CompliantAnswers.FromString( NodeTypeProp.ValueOptions );
                        foreach (string Answer in PossibleAnswers)
                        {
                            ResponseProperty.Choices.Add(new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspectionDesign.AnswerChoice
                            {
                                Text        = Answer,
                                IsCompliant = CompliantAnswers.Contains(Answer, false)
                            });
                        }
                        ResponseSection.Properties.Add(ResponseProperty);
                    }

                    if (ResponseSection.Properties.Count > 0)
                    {
                        Ret.Sections.Add(ResponseSection);
                    }
                }
            }
            return(Ret);
        }