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); } } }
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()
/// <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()
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); }