protected override void beforeWriteNodeLogic( bool Creating, bool OverrideUniqueValidation ) { //Case 24572 updateNextDueDate( ForceUpdate: false, DeleteFutureNodes: ( TargetType.wasAnySubFieldModified() || ParentType.wasAnySubFieldModified() ) ); // case 28352 Int32 max = DueDateInterval.getMaximumWarningDays(); if( WarningDays.Value > max ) { WarningDays.Value = max; } } //beforeWriteNode()
private void _trySetNodeTypeSelectDefaultValues() { //has owner and (is inspection schedule or has a view already) bool RequiresParentView = CswTools.IsPrimaryKey( Owner.RelatedNodeId ) && ( Node.getNodeType().getFirstVersionNodeType().NodeTypeName == InspectionGeneratorNodeTypeName || ( ParentView.ViewId != null && ParentView.ViewId.isSet() ) ); if( RequiresParentView ) { CswNbtNode OwnerNode = _CswNbtResources.Nodes.GetNode( Owner.RelatedNodeId ); Collection<CswNbtMetaDataNodeType> MatchingInspectionTargetNts = new Collection<CswNbtMetaDataNodeType>(); //parent is selectable and is inspection and owner is valid and (parent untouched or empty) bool SetDefaultParentType = ( ( false == ParentType.wasAnySubFieldModified() || ParentType.SelectedNodeTypeIds.Count == 0 ) && null != OwnerNode && OwnerNode.getObjectClass().ObjectClass == CswEnumNbtObjectClass.InspectionTargetGroupClass && ParentType.SelectMode != CswEnumNbtPropertySelectMode.Blank ); if( SetDefaultParentType ) { ParentType.SelectedNodeTypeIds.Clear(); CswNbtMetaDataObjectClass InspectionTargetOc = _CswNbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.InspectionTargetClass ); foreach( CswNbtMetaDataNodeType InspectionTargetNt in InspectionTargetOc.getNodeTypes() ) { if( InspectionTargetNt.IsLatestVersion() ) { CswNbtMetaDataNodeTypeProp TargetGroupNtp = InspectionTargetNt.getNodeTypePropByObjectClassProp( CswNbtObjClassInspectionTarget.PropertyName.InspectionTargetGroup ); if( _fkIsValid( TargetGroupNtp ) ) { CswNbtMetaDataNodeType InspectionTargetGroupNt = _CswNbtResources.MetaData.getNodeType( TargetGroupNtp.FKValue ).getNodeTypeLatestVersion(); if( null != InspectionTargetGroupNt && false == MatchingInspectionTargetNts.Contains( InspectionTargetNt ) && InspectionTargetGroupNt == OwnerNode.getNodeTypeLatestVersion() ) { MatchingInspectionTargetNts.Add( InspectionTargetNt ); ParentType.SelectedNodeTypeIds.Add( InspectionTargetNt.NodeTypeId.ToString(), false, true ); if( ParentType.SelectMode == CswEnumNbtPropertySelectMode.Single ) { break; } } } // is valid FK } // if( InspectionTargetNt.IsLatestVersion ) } // foreach( CswNbtMetaDataNodeType InspectionTargetNt in InspectionTargetOc.NodeTypes ) } // if( SetDefaultTargetType ) //target is selectable and (parent or target not empty) and (target untouched or empty) bool SetDefaultTargetType = ( ( false == TargetType.wasAnySubFieldModified() || TargetType.SelectedNodeTypeIds.Count == 0 ) && TargetType.SelectMode != CswEnumNbtPropertySelectMode.Blank && ( MatchingInspectionTargetNts.Count > 0 || TargetType.SelectedNodeTypeIds.Count > 0 ) ); if( SetDefaultTargetType ) { if( MatchingInspectionTargetNts.Count == 0 ) { foreach( Int32 InspectionTargetNodeTypeId in TargetType.SelectedNodeTypeIds.ToIntCollection() ) { CswNbtMetaDataNodeType InspectionTargetNt = _CswNbtResources.MetaData.getNodeType( InspectionTargetNodeTypeId ); if( null != InspectionTargetNt ) { CswNbtMetaDataNodeType LatestInspectionTargetNt = InspectionTargetNt.getNodeTypeLatestVersion(); if( LatestInspectionTargetNt.getObjectClass().ObjectClass == CswEnumNbtObjectClass.InspectionTargetClass && false == MatchingInspectionTargetNts.Contains( LatestInspectionTargetNt ) ) { MatchingInspectionTargetNts.Add( LatestInspectionTargetNt ); } } } } if( MatchingInspectionTargetNts.Count > 0 ) { TargetType.SelectedNodeTypeIds.Clear(); CswNbtMetaDataObjectClass InspectionDesignOc = _CswNbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.InspectionDesignClass ); foreach( CswNbtMetaDataNodeType InspectionDesignNt in InspectionDesignOc.getNodeTypes() ) { if( InspectionDesignNt.IsLatestVersion() ) { CswNbtMetaDataNodeTypeProp DesignTargetNtp = InspectionDesignNt.getNodeTypePropByObjectClassProp( CswNbtObjClassInspectionDesign.PropertyName.Target ); foreach( CswNbtMetaDataNodeType MatchingInspectionTargetNt in MatchingInspectionTargetNts ) { if( _fkIsValid( DesignTargetNtp ) && MatchingInspectionTargetNt.NodeTypeId == DesignTargetNtp.FKValue ) { TargetType.SelectedNodeTypeIds.Add( InspectionDesignNt.NodeTypeId.ToString(), false, true ); if( TargetType.SelectMode == CswEnumNbtPropertySelectMode.Single ) { break; } } } } } } } } }