예제 #1
0
        public int saveFile(string PropIdAttr, byte[] BlobData, string ContentType, string FileName, out string Href, int BlobDataId = Int32.MinValue, bool PostChanges = true, CswNbtNode Node = null)
        {
            CswPropIdAttr PropId = new CswPropIdAttr(PropIdAttr);

            CswNbtMetaDataNodeTypeProp MetaDataProp = _CswNbtResources.MetaData.getNodeTypeProp(PropId.NodeTypePropId);

            if (null == Node)
            {
                Node = _CswNbtResources.Nodes[PropId.NodeId];
            }
            CswNbtNodePropWrapper FileProp = Node.Properties[MetaDataProp];

            if (_CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, MetaDataProp.getNodeType(), _CswNbtResources.CurrentNbtUser) &&
                _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, MetaDataProp, null, FileProp))
            {
                if (Int32.MinValue == FileProp.JctNodePropId)
                {
                    FileProp.makePropRow(); //if we don't have a jct_node_prop row for this prop, we do now
                    if (PostChanges)
                    {
                        Node.postChanges(true);
                    }
                }

                if (FileProp.getFieldType().FieldType == CswEnumNbtFieldType.Image)
                {
                    //case 29692: support EXIF image rotation metadata to properly orient photos
                    bool         img_ok = false;
                    MemoryStream ms     = new MemoryStream(BlobData, 0, BlobData.Length);
                    ms.Write(BlobData, 0, BlobData.Length);
                    System.Drawing.Image img = null;

                    try
                    {
                        img    = Image.FromStream(ms, true);
                        img_ok = true;
                    }
                    catch
                    {
                    }

                    if (img_ok == true)
                    {
                        FixOrientation(ref img);
                        ImageConverter converter = new ImageConverter();
                        BlobData = (byte[])converter.ConvertTo(img, typeof(byte[]));
                    }
                }



                //Save the file to blob_data
                CswTableUpdate BlobUpdate  = _CswNbtResources.makeCswTableUpdate("saveBlob", "blob_data");
                string         whereClause = "where jctnodepropid = " + FileProp.JctNodePropId;
                if (Int32.MinValue != BlobDataId)
                {
                    whereClause += " and blobdataid = " + BlobDataId;
                }
                DataTable BlobTbl = BlobUpdate.getTable(whereClause);
                if (BlobTbl.Rows.Count > 0 &&
                    (Int32.MinValue != BlobDataId ||
                     FileProp.getFieldTypeValue() == CswEnumNbtFieldType.File ||
                     FileProp.getFieldTypeValue() == CswEnumNbtFieldType.MOL))
                {
                    BlobTbl.Rows[0]["blobdata"]    = BlobData;
                    BlobTbl.Rows[0]["contenttype"] = ContentType;
                    BlobTbl.Rows[0]["filename"]    = FileName;
                    BlobTbl.Rows[0]["auditlevel"]  = MetaDataProp.AuditLevel;
                    BlobDataId = CswConvert.ToInt32(BlobTbl.Rows[0]["blobdataid"]);
                }
                else
                {
                    DataRow NewRow = BlobTbl.NewRow();
                    NewRow["jctnodepropid"] = FileProp.JctNodePropId;
                    NewRow["blobdata"]      = BlobData;
                    NewRow["contenttype"]   = ContentType;
                    NewRow["filename"]      = FileName;
                    NewRow["auditlevel"]    = MetaDataProp.AuditLevel;
                    BlobDataId = CswConvert.ToInt32(NewRow["blobdataid"]);
                    BlobTbl.Rows.Add(NewRow);
                }
                BlobUpdate.update(BlobTbl);

                if (Node.getObjectClass().ObjectClass == CswEnumNbtObjectClass.ReportClass)
                {
                    CswNbtObjClassReport Report        = Node;
                    CswFilePath          FilePathTools = new CswFilePath(_CswNbtResources);
                    string ReportPath = FilePathTools.getFullReportFilePath(Report.RPTFile.JctNodePropId.ToString());
                    _createReportFile(ReportPath, Report.RPTFile.JctNodePropId, BlobData);
                }

                if (CswEnumNbtFieldType.File == FileProp.getFieldTypeValue())
                {
                    SetLastModified(FileProp);
                }

                FileProp.SyncGestalt();
                if (PostChanges)
                {
                    Node.postChanges(false);
                }

                Href = CswNbtNodePropBlob.getLink(FileProp.JctNodePropId, PropId.NodeId, BlobDataId);
            } //canNodeType() && isPropWritable()
            else
            {
                Href = string.Empty; //To satifsy the "ref string Href"
                throw new CswDniException(CswEnumErrorType.Error, "You do not have sufficient priveledges to save files", "User " + _CswNbtResources.CurrentNbtUser.UserId + " attemped to save blobdata on JctNodeProp " + FileProp.JctNodePropId);
            }
            return(BlobDataId);
        }
예제 #2
0
        protected override void OnEnable()
        {
#if DEBUG
            if (_CswNbtResources.ConfigVbls.doesConfigVarExist(CswEnumConfigurationVariableNames.Logging_Level))
            {
                _CswNbtResources.ConfigVbls.setConfigVariableValue(CswEnumConfigurationVariableNames.Logging_Level.ToString(), "Info");
            }
            _CswNbtResources.SetupVbls.writeSetting(CswEnumSetupVariableNames.ShowFullExceptions, "true");

            CswNbtMetaDataNodeType FieldTypeNt = _CswNbtResources.MetaData.getNodeType("Csw Dev FieldType Test");
            if (null == FieldTypeNt)
            {
                FieldTypeNt = _CswNbtResources.MetaData.makeNewNodeType(
                    new CswNbtWcfMetaDataModel.NodeType(_CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.GenericClass))
                {
                    NodeTypeName = "Csw Dev FieldType Test",
                    Category     = "Csw Dev"
                });

                CswNbtMetaDataNodeTypeTab SimpleTab = FieldTypeNt.getNodeTypeTab("Csw Dev FieldType Test");
                if (null != SimpleTab)
                {
                    //SimpleTab.TabName = "Simple";
                    SimpleTab.DesignNode.TabName.Text = "Simple";
                    SimpleTab.DesignNode.postChanges(false);
                }
                else
                {
                    SimpleTab = _CswNbtResources.MetaData.makeNewTab(FieldTypeNt, "Simple", 1);
                }
                CswNbtMetaDataNodeTypeTab LessSimpleTab = _CswNbtResources.MetaData.makeNewTab(FieldTypeNt, "Less Simple", 2);
                CswNbtMetaDataNodeTypeTab ComplexTab    = _CswNbtResources.MetaData.makeNewTab(FieldTypeNt, "Complex", 3);

                foreach (CswNbtMetaDataFieldType FieldType in _CswNbtResources.MetaData.getFieldTypes())
                {
                    switch (FieldType.FieldType)
                    {
                    case CswEnumNbtFieldType.Barcode:
                    case CswEnumNbtFieldType.DateTime:
                    case CswEnumNbtFieldType.Image:
                    case CswEnumNbtFieldType.List:
                    case CswEnumNbtFieldType.Logical:
                    case CswEnumNbtFieldType.Memo:
                    case CswEnumNbtFieldType.Number:
                    case CswEnumNbtFieldType.PropertyReference:
                    case CswEnumNbtFieldType.Sequence:
                    case CswEnumNbtFieldType.Static:
                    case CswEnumNbtFieldType.Text:
                        _CswNbtResources.MetaData.makeNewProp(new CswNbtWcfMetaDataModel.NodeTypeProp(FieldTypeNt, FieldType, FieldType.FieldType.ToString())
                        {
                            TabId = SimpleTab.TabId
                        });
                        break;

                    case CswEnumNbtFieldType.Comments:
                    case CswEnumNbtFieldType.Composite:
                    case CswEnumNbtFieldType.File:
                    case CswEnumNbtFieldType.ImageList:
                    case CswEnumNbtFieldType.Link:
                    case CswEnumNbtFieldType.MOL:
                    case CswEnumNbtFieldType.MTBF:
                    case CswEnumNbtFieldType.Password:
                    case CswEnumNbtFieldType.Quantity:
                    case CswEnumNbtFieldType.Scientific:
                    case CswEnumNbtFieldType.ViewReference:
                        _CswNbtResources.MetaData.makeNewProp(new CswNbtWcfMetaDataModel.NodeTypeProp(FieldTypeNt, FieldType, FieldType.FieldType.ToString())
                        {
                            TabId = LessSimpleTab.TabId
                        });
                        break;

                    case CswEnumNbtFieldType.Grid:
                    case CswEnumNbtFieldType.Location:
                    case CswEnumNbtFieldType.LogicalSet:
                    case CswEnumNbtFieldType.MultiList:
                    case CswEnumNbtFieldType.Question:
                    case CswEnumNbtFieldType.NFPA:
                    case CswEnumNbtFieldType.NodeTypeSelect:
                    case CswEnumNbtFieldType.Relationship:
                    case CswEnumNbtFieldType.TimeInterval:
                    case CswEnumNbtFieldType.ViewPickList:
                    case CswEnumNbtFieldType.UserSelect:
                        _CswNbtResources.MetaData.makeNewProp(new CswNbtWcfMetaDataModel.NodeTypeProp(FieldTypeNt, FieldType, FieldType.FieldType.ToString())
                        {
                            TabId = ComplexTab.TabId
                        });
                        break;
                    }
                }

                CswNbtView FieldTypeView = new CswNbtView(_CswNbtResources);
                FieldTypeView.saveNew("Field Types", CswEnumNbtViewVisibility.User, null, _CswNbtResources.Nodes.makeUserNodeFromUsername(CswNbtObjClassUser.ChemSWAdminUsername).NodeId);
                FieldTypeView.AddViewRelationship(FieldTypeNt, false);
                FieldTypeView.Category = "Csw Dev";
                FieldTypeView.save();


                CswNbtNode Node1 = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(FieldTypeNt.NodeTypeId);
                CswNbtNode Node2 = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(FieldTypeNt.NodeTypeId);
                Node1.IsDemo = true;
                Node1.postChanges(ForceUpdate: false);
                Node2.IsDemo = true;
                Node2.postChanges(ForceUpdate: false);
            }

            _CswNbtResources.Modules.EnableModule(CswEnumNbtModuleName.NBTManager);

            CswNbtMetaDataNodeType CustomerNt = _CswNbtResources.MetaData.getNodeType("Csw Dev Customers");
            if (null == CustomerNt)
            {
                CustomerNt = _CswNbtResources.MetaData.makeNewNodeType(new CswNbtWcfMetaDataModel.NodeType(_CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.CustomerClass))
                {
                    NodeTypeName = "Csw Dev Customers"
                });

                CswNbtView CustomersView = new CswNbtView(_CswNbtResources);
                CustomersView.saveNew("Csw Dev Customers", CswEnumNbtViewVisibility.Global);
                CustomersView.Category = "Csw Dev";
                CustomersView.AddViewRelationship(CustomerNt, IncludeDefaultFilters: true);
                CustomersView.save();

                foreach (string AccessId in _CswNbtResources.CswDbCfgInfo.AccessIds)
                {
                    _CswNbtResources.Nodes.makeNodeFromNodeTypeId(CustomerNt.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        ((CswNbtObjClassCustomer)NewNode).CompanyID.Text = AccessId;
                    });
                }
            }
#endif
        }
예제 #3
0
        public override void update()
        {
            CswNbtMetaDataObjectClass GenericOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.GenericClass );
            CswNbtMetaDataObjectClass MaterialOC = _CswNbtSchemaModTrnsctn.MetaData.getObjectClass( CswNbtMetaDataObjectClass.NbtObjectClass.MaterialClass );

            CswNbtMetaDataFieldType TextFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Text );
            CswNbtMetaDataFieldType ListFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.List );
            CswNbtMetaDataFieldType GridFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Grid );
            CswNbtMetaDataFieldType ImageListFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.ImageList );
            CswNbtMetaDataFieldType RelationshipFT = _CswNbtSchemaModTrnsctn.MetaData.getFieldType( CswNbtMetaDataFieldType.NbtFieldType.Relationship );


            //// Jurisdiction NodeType
            //CswNbtMetaDataNodeType JurisdictionNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC )
            //{
            //    NodeTypeName = "Jurisdiction",
            //    Category = "System",
            //    IconFileName = "globe.gif"
            //} );
            //CswNbtMetaDataNodeTypeProp JurisdictionNameNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( JurisdictionNT, TextFT, "Name" ) );
            //JurisdictionNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( "Name" ) );

            //// Default Jurisdictions
            //CswNbtNode JurisNorthAmericaNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( JurisdictionNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
            //JurisNorthAmericaNode.Properties[JurisdictionNameNTP].AsText.Text = "North America";
            //JurisNorthAmericaNode.postChanges( false );

            //CswNbtNode JurisEuropeNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( JurisdictionNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
            //JurisEuropeNode.Properties[JurisdictionNameNTP].AsText.Text = "Europe";
            //JurisEuropeNode.postChanges( false );


            // GHS Phrase NodeType
            CswNbtMetaDataNodeType GHSPhraseNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC )
            {
                NodeTypeName = "GHS Phrase",
                Category = "System",
                IconFileName = "group.gif"
            } );
            CswNbtMetaDataNodeTypeProp GHSPhraseCodeNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Code" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseCategoryNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, ListFT, "Category" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseEnglishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "English" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseChineseNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Chinese" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseDanishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Danish" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseDutchNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Dutch" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseFrenchNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "French" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseGermanNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "German" ) );
            CswNbtMetaDataNodeTypeProp GHSPhraseSpanishNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSPhraseNT, TextFT, "Spanish" ) );
            GHSPhraseCategoryNTP.ListOptions = "Physical,Health,Environmental";
            GHSPhraseNT.setNameTemplateText( CswNbtMetaData.MakeTemplateEntry( "Code" ) );
            
            _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswNbtResources.CswNbtModule.CISPro, GHSPhraseNT.NodeTypeId );
            
            // GHS NodeType
            CswNbtMetaDataNodeType GHSNT = _CswNbtSchemaModTrnsctn.MetaData.makeNewNodeType( new CswNbtWcfMetaDataModel.NodeType( GenericOC )
            {
                NodeTypeName = "GHS",
                Category = "Materials",
                IconFileName = "ball_redS.gif"
            } );
            CswNbtMetaDataNodeTypeProp GHSTypeNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, ListFT, "Type" ) { IsRequired = true } );
            CswNbtMetaDataNodeTypeProp GHSMaterialNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "Material" ) { IsRequired = true } );
            CswNbtMetaDataNodeTypeProp GHSGHSPhraseNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "GHS Phrase" ) { IsRequired = true } );
            //CswNbtMetaDataNodeTypeProp GHSJurisdictionNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, RelationshipFT, "Jurisdiction" ) { IsRequired = true } );
            CswNbtMetaDataNodeTypeProp GHSJurisdictionNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( GHSNT, ListFT, "Jurisdiction" ) { IsRequired = true } );

            GHSTypeNTP.ListOptions = "Class Code, Label Code";
            GHSMaterialNTP.SetFK( NbtViewRelatedIdType.ObjectClassId.ToString(), MaterialOC.ObjectClassId );
            GHSGHSPhraseNTP.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), GHSPhraseNT.NodeTypeId );
            //GHSJurisdictionNTP.SetFK( NbtViewRelatedIdType.NodeTypeId.ToString(), JurisdictionNT.NodeTypeId );
            GHSJurisdictionNTP.ListOptions = "North America, China, Europe, Japan";
            
            _CswNbtSchemaModTrnsctn.createModuleNodeTypeJunction( CswNbtResources.CswNbtModule.CISPro, GHSNT.NodeTypeId );

            // Chemical GHS Tab
            CswNbtMetaDataNodeType ChemicalNT = _CswNbtSchemaModTrnsctn.MetaData.getNodeType( "Chemical" );
            if( null != ChemicalNT )
            {
                foreach( CswNbtMetaDataNodeTypeTab Tab in ChemicalNT.getNodeTypeTabs() )
                {
                    if( Tab.TabOrder >= 3 )
                        Tab.TabOrder += 1;
                }
                CswNbtMetaDataNodeTypeTab GHSTab = ChemicalNT.getNodeTypeTab( "GHS" );
                if( null == GHSTab )
                {
                    GHSTab = _CswNbtSchemaModTrnsctn.MetaData.makeNewTab( ChemicalNT, "GHS", 3 );
                }
                GHSTab.TabOrder = 3;

                // Chemical GHS properties
                CswNbtMetaDataNodeTypeProp ChemicalGHSClassificationNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ListFT, "GHS Classification" ) );
                CswNbtMetaDataNodeTypeProp ChemicalGHSClassCodesNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, GridFT, "GHS Class Codes" ) );
                CswNbtMetaDataNodeTypeProp ChemicalGHSSignalWordNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ListFT, "GHS Signal Word" ) );
                CswNbtMetaDataNodeTypeProp ChemicalGHSLabelCodesNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, GridFT, "GHS Label Codes" ) );
                CswNbtMetaDataNodeTypeProp ChemicalGHSPictosNTP = _CswNbtSchemaModTrnsctn.MetaData.makeNewProp( new CswNbtWcfMetaDataModel.NodeTypeProp( ChemicalNT, ImageListFT, "GHS Pictos" ) );

                CswCommaDelimitedString GHSClasses = new CswCommaDelimitedString(){
                    "Category 1",
                    "Category 1 / 1A / 1B",
                    "Category 1A",
                    "Category 1A / 1B",
                    "Category 1A / 1B / 1C",
                    "Category 1B",
                    "Category 2",
                    "Category 2 (skin)/2A (eye)",
                    "Category 2A",
                    "Category 2B",
                    "Category 3",
                    "Category 4",
                    "Category 5",
                    "Type A",
                    "Type B",
                    "Type C&D",
                    "Type E&F",
                    "Compressed Gas",
                    "Liquified Gas",
                    "Dissolved Gas",
                    "Refridgerated Liquidified Gas"
                };
                ChemicalGHSClassificationNTP.ListOptions = GHSClasses.ToString();
                ChemicalGHSSignalWordNTP.ListOptions = "Danger,Warning";

                ChemicalGHSClassificationNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                ChemicalGHSClassCodesNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                ChemicalGHSSignalWordNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                ChemicalGHSLabelCodesNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );
                ChemicalGHSPictosNTP.removeFromLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Add );

                ChemicalGHSClassificationNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 1, 1, "Hazard Classification" );
                ChemicalGHSClassCodesNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 2, 1, "Hazard Classification" );
                ChemicalGHSSignalWordNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 3, 1, "Hazard Label" );
                ChemicalGHSLabelCodesNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 4, 1, "Hazard Label" );
                ChemicalGHSPictosNTP.updateLayout( CswNbtMetaDataNodeTypeLayoutMgr.LayoutType.Edit, true, GHSTab.TabId, 5, 1, "Hazard Label" );


                // Grid Views
                CswNbtView GHSClassCodesView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalGHSClassCodesNTP.ViewId );
                GHSClassCodesView.Root.ChildRelationships.Clear();

                CswNbtViewRelationship ChemicalVR1 = GHSClassCodesView.AddViewRelationship( ChemicalNT, false );
                CswNbtViewRelationship GHSVR1 = GHSClassCodesView.AddViewRelationship( ChemicalVR1, NbtViewPropOwnerType.Second, GHSMaterialNTP, true );
                CswNbtViewRelationship GHSPhraseVR1 = GHSClassCodesView.AddViewRelationship( GHSVR1, NbtViewPropOwnerType.First, GHSGHSPhraseNTP, true );

                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseCodeNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseCategoryNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseEnglishNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseChineseNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseDanishNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseDutchNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseFrenchNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseGermanNTP );
                GHSClassCodesView.AddViewProperty( GHSPhraseVR1, GHSPhraseSpanishNTP );

                GHSClassCodesView.AddViewPropertyAndFilter( GHSVR1, GHSTypeNTP, Value: "Class Code" );
                GHSClassCodesView.AddViewPropertyAndFilter( GHSVR1, GHSJurisdictionNTP, Value: "North America", ShowAtRuntime: true );
                GHSClassCodesView.save();

                CswNbtView GHSLabelCodesView = _CswNbtSchemaModTrnsctn.restoreView( ChemicalGHSLabelCodesNTP.ViewId );
                GHSLabelCodesView.Root.ChildRelationships.Clear();

                CswNbtViewRelationship ChemicalVR2 = GHSLabelCodesView.AddViewRelationship( ChemicalNT, false );
                CswNbtViewRelationship GHSVR2 = GHSLabelCodesView.AddViewRelationship( ChemicalVR2, NbtViewPropOwnerType.Second, GHSMaterialNTP, true );
                CswNbtViewRelationship GHSPhraseVR2 = GHSLabelCodesView.AddViewRelationship( GHSVR2, NbtViewPropOwnerType.First, GHSGHSPhraseNTP, true );

                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseCodeNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseCategoryNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseEnglishNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseChineseNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseDanishNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseDutchNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseFrenchNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseGermanNTP );
                GHSLabelCodesView.AddViewProperty( GHSPhraseVR2, GHSPhraseSpanishNTP );

                GHSLabelCodesView.AddViewPropertyAndFilter( GHSVR2, GHSTypeNTP, Value: "Label Code" );
                GHSLabelCodesView.AddViewPropertyAndFilter( GHSVR2, GHSJurisdictionNTP, Value: "North America", ShowAtRuntime: true );
                GHSLabelCodesView.save();

                // Picto Options
                ChemicalGHSPictosNTP.Extended = "true"; // allow multiple values
                ChemicalGHSPictosNTP.TextAreaColumns = 100;
                ChemicalGHSPictosNTP.TextAreaRows = 100;

                CswDelimitedString PictoNames = new CswDelimitedString( '\n' ) { 
                    "Chemical",
                    "Explosive",
                    "Flammable",
                    "Natural",
                    "Oxidizer",
                    "Danger",
                    "X"
                };
                CswDelimitedString PictoPaths = new CswDelimitedString( '\n' ) { 
                    //"Images/cispro/1-1.gif",
                    //"Images/cispro/1-2.gif",
                    //"Images/cispro/1-3.gif",
                    //"Images/cispro/1-4.gif",
                    //"Images/cispro/1-5.gif",
                    //"Images/cispro/1-6.gif",
                    //"Images/cispro/5-2.gif",
                    "Images/cispro/acide.gif",
                    //"Images/cispro/acide2.gif",
                    //"Images/cispro/blan-red.gif",
                    //"Images/cispro/bleu4.gif",
                    //"Images/cispro/bleu4-noir.gif",
                    "Images/cispro/bottle.gif",
                    "Images/cispro/exclam.gif",
                    "Images/cispro/explos.gif",
                    "Images/cispro/flamme.gif",
                    //"Images/cispro/jaune5-1.gif",
                    "Images/cispro/pollu.gif",
                    "Images/cispro/rondflam.gif",
                    //"Images/cispro/rouge2.gif",
                    //"Images/cispro/rouge2_noir.gif",
                    //"Images/cispro/rouge3.gif",
                    //"Images/cispro/rouge3_noir.gif",
                    "Images/cispro/silouete.gif",
                    "Images/cispro/skull.gif"
                    //"Images/cispro/skull_2.gif",
                    //"Images/cispro/skull6.gif",
                    //"Images/cispro/stripes.gif",
                    //"Images/cispro/vert.gif"
                };
                ChemicalGHSPictosNTP.ListOptions = PictoNames.ToString();
                ChemicalGHSPictosNTP.ValueOptions = PictoPaths.ToString();
            }

            //GHS Phrase nodes
            Dictionary<Int32, string> GHSPhraseCodes = new Dictionary<Int32, string>();
            //Physical
            GHSPhraseCodes.Add( 200, "Unstable explosive" );
            GHSPhraseCodes.Add( 201, "Explosive; mass explosion hazard" );
            GHSPhraseCodes.Add( 202, "Explosive; severe projection hazard" );
            GHSPhraseCodes.Add( 203, "Explosive; fire, blast or projection hazard" );
            GHSPhraseCodes.Add( 204, "Fire or projection hazard" );
            GHSPhraseCodes.Add( 205, "May mass explode in fire" );
            GHSPhraseCodes.Add( 220, "Extremely flammable gas" );
            GHSPhraseCodes.Add( 221, "Flammable gas" );
            GHSPhraseCodes.Add( 222, "Extremely flammable material" );
            GHSPhraseCodes.Add( 223, "Flammable material" );
            GHSPhraseCodes.Add( 224, "Extremely flammable liquid and vapour" );
            GHSPhraseCodes.Add( 225, "Highly flammable liquid and vapour" );
            GHSPhraseCodes.Add( 226, "Flammable liquid and vapour" );
            GHSPhraseCodes.Add( 227, "Combustible liquid" );
            GHSPhraseCodes.Add( 228, "Flammable solid" );
            GHSPhraseCodes.Add( 240, "Heating may cause an explosion" );
            GHSPhraseCodes.Add( 241, "Heating may cause a fire or explosion" );
            GHSPhraseCodes.Add( 242, "Heating may cause a fire" );
            GHSPhraseCodes.Add( 250, "Catches fire spontaneously if exposed to air" );
            GHSPhraseCodes.Add( 251, "Self-heating; may catch fire" );
            GHSPhraseCodes.Add( 252, "Self-heating in large quantities; may catch fire" );
            GHSPhraseCodes.Add( 260, "In contact with water releases flammable gases which may ignite spontaneously" );
            GHSPhraseCodes.Add( 261, "In contact with water releases flammable gas" );
            GHSPhraseCodes.Add( 270, "May cause or intensify fire; oxidizer" );
            GHSPhraseCodes.Add( 271, "May cause fire or explosion; strong oxidizer" );
            GHSPhraseCodes.Add( 272, "May intensify fire; oxidizer" );
            GHSPhraseCodes.Add( 280, "Contains gas under pressure; may explode if heated" );
            GHSPhraseCodes.Add( 281, "Contains refrigerated gas; may cause cryogenic burns or injury" );
            GHSPhraseCodes.Add( 290, "May be corrosive to metals" );
            //Health
            GHSPhraseCodes.Add( 300, "Fatal if swallowed" );
            GHSPhraseCodes.Add( 301, "Toxic if swallowed" );
            GHSPhraseCodes.Add( 302, "Harmful if swallowed" );
            GHSPhraseCodes.Add( 303, "May be harmful if swallowed" );
            GHSPhraseCodes.Add( 304, "May be fatal if swallowed and enters airways" );
            GHSPhraseCodes.Add( 305, "May be harmful if swallowed and enters airways" );
            GHSPhraseCodes.Add( 310, "Fatal in contact with skin" );
            GHSPhraseCodes.Add( 311, "Toxic in contact with skin" );
            GHSPhraseCodes.Add( 312, "Harmful in contact with skin" );
            GHSPhraseCodes.Add( 313, "May be harmful in contact with skin" );
            GHSPhraseCodes.Add( 314, "Causes severe skin burns and eye damage" );
            GHSPhraseCodes.Add( 315, "Causes skin irritation" );
            GHSPhraseCodes.Add( 316, "Causes mild skin irritation" );
            GHSPhraseCodes.Add( 317, "May cause an allergic skin reaction" );
            GHSPhraseCodes.Add( 318, "Causes serious eye damage" );
            GHSPhraseCodes.Add( 319, "Causes serious eye irritation" );
            GHSPhraseCodes.Add( 320, "Causes eye irritation" );
            GHSPhraseCodes.Add( 330, "Fatal if inhaled" );
            GHSPhraseCodes.Add( 331, "Toxic if inhaled" );
            GHSPhraseCodes.Add( 332, "Harmful if inhaled" );
            GHSPhraseCodes.Add( 333, "May be harmful if inhaled" );
            GHSPhraseCodes.Add( 334, "May cause allergy or asthma symptoms of breathing difficulties if inhaled" );
            GHSPhraseCodes.Add( 335, "May cause respiratory irritation" );
            GHSPhraseCodes.Add( 336, "May cause drowsiness or dizziness" );
            GHSPhraseCodes.Add( 340, "May cause genetic defects" );
            GHSPhraseCodes.Add( 341, "Suspected of causing genetic defects" );
            GHSPhraseCodes.Add( 350, "May cause cancer" );
            GHSPhraseCodes.Add( 351, "Suspected of causing cancer" );
            GHSPhraseCodes.Add( 360, "May damage fertility or the unborn child" );
            GHSPhraseCodes.Add( 361, "Suspected of damaging fertility or the unborn child" );
            GHSPhraseCodes.Add( 362, "May cause harm to breast-fed children" );
            GHSPhraseCodes.Add( 370, "Causes damage to organs" );
            GHSPhraseCodes.Add( 371, "May cause damage to organs" );
            GHSPhraseCodes.Add( 372, "Causes damage to organs through prolonged or repeated exposure" );
            GHSPhraseCodes.Add( 373, "May cause damage to organs through prolonged or repeated exposure" );
            // Environmental
            GHSPhraseCodes.Add( 400, "Very toxic to aquatic life" );
            GHSPhraseCodes.Add( 401, "Toxic to aquatic life" );
            GHSPhraseCodes.Add( 402, "Harmful to aquatic life" );
            GHSPhraseCodes.Add( 410, "Very toxic to aquatic life with long lasting effects" );
            GHSPhraseCodes.Add( 411, "Toxic to aquatic life with long lasting effects" );
            GHSPhraseCodes.Add( 412, "Harmful to aquatic life with long lasting effects" );
            GHSPhraseCodes.Add( 413, "May cause long lasting harmful effects to aquatic life" );

            foreach( Int32 Code in GHSPhraseCodes.Keys )
            {
                string Category = "Physical";
                if( Code > 299 )
                {
                    Category = "Health";
                }
                else if( Code > 399 )
                {
                    Category = "Environmental";
                }

                CswNbtNode GHSPhraseNode = _CswNbtSchemaModTrnsctn.Nodes.makeNodeFromNodeTypeId( GHSPhraseNT.NodeTypeId, CswNbtNodeCollection.MakeNodeOperation.WriteNode );
                GHSPhraseNode.Properties[GHSPhraseCodeNTP].AsText.Text = "H" + Code.ToString();
                GHSPhraseNode.Properties[GHSPhraseCategoryNTP].AsList.Value = Category;
                GHSPhraseNode.Properties[GHSPhraseEnglishNTP].AsText.Text = GHSPhraseCodes[Code];
                GHSPhraseNode.postChanges( false );
            } // foreach( Int32 Code in GHSPhraseCodes.Keys )

        }//Update()
예제 #4
0
        public override void update()
        {
            {
                CswCommaDelimitedString LogicalsMissingValidDefaultValues = new CswCommaDelimitedString();
                foreach (CswNbtMetaDataNodeType NodeType in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes())
                {
                    foreach (CswNbtMetaDataNodeTypeProp Logical in NodeType.getNodeTypeProps(CswEnumNbtFieldType.Logical))
                    {
                        if (Logical.IsRequired &&
                            (false == Logical.HasDefaultValue() ||
                             (CswEnumTristate.False != Logical.DefaultValue.AsLogical.Checked &&
                              CswEnumTristate.True != Logical.DefaultValue.AsLogical.Checked)))
                        {
                            LogicalsMissingValidDefaultValues.Add(Logical.PropId.ToString());
                            Logical.DefaultValue.AsLogical.Checked = CswEnumTristate.False;
                        }
                    }
                }
                if (LogicalsMissingValidDefaultValues.Count > 0)
                {
                    string             NodesToUpdateSql = @" select nodeid, nodetypepropid from jct_nodes_props where nodetypepropid in (" + LogicalsMissingValidDefaultValues.ToString() + ")";
                    CswArbitrarySelect ArbSelect        = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect("logicals_missing_default_values", NodesToUpdateSql);
                    DataTable          NodeTable        = ArbSelect.getTable();
                    foreach (DataRow Row in NodeTable.Rows)
                    {
                        CswPrimaryKey NodeId = new CswPrimaryKey("nodes", CswConvert.ToInt32(Row["nodeid"]));
                        CswNbtNode    Node   = _CswNbtSchemaModTrnsctn.Nodes[NodeId];
                        if (null != Node)
                        {
                            Int32 NodeTypePropId = CswConvert.ToInt32(Row["nodetypepropid"]);

                            CswNbtNodePropWrapper PropWrapper = Node.Properties[NodeTypePropId];
                            if (null != PropWrapper)
                            {
                                if (CswEnumTristate.False != PropWrapper.AsLogical.Checked &&
                                    CswEnumTristate.True != PropWrapper.AsLogical.Checked)
                                {
                                    PropWrapper.SetDefaultValue();
                                }
                            }
                            Node.postChanges(ForceUpdate: false);
                        }
                    }
                }
            }

            {
                CswCommaDelimitedString ImageListsWithDefaultValue = new CswCommaDelimitedString();
                foreach (CswNbtMetaDataNodeType NodeType in _CswNbtSchemaModTrnsctn.MetaData.getNodeTypes())
                {
                    foreach (CswNbtMetaDataNodeTypeProp ImageList in NodeType.getNodeTypeProps(CswEnumNbtFieldType.ImageList))
                    {
                        if (ImageList.IsRequired &&
                            ImageList.HasDefaultValue())
                        {
                            ImageListsWithDefaultValue.Add(ImageList.PropId.ToString());
                        }
                    }
                }

                if (ImageListsWithDefaultValue.Count > 0)
                {
                    string             NodesToUpdateSql = @" select nodeid, nodetypepropid from jct_nodes_props where nodetypepropid in (" + ImageListsWithDefaultValue.ToString() + ")";
                    CswArbitrarySelect ArbSelect        = _CswNbtSchemaModTrnsctn.makeCswArbitrarySelect("imagelists_default_values", NodesToUpdateSql);
                    DataTable          NodeTable        = ArbSelect.getTable();
                    foreach (DataRow Row in NodeTable.Rows)
                    {
                        CswPrimaryKey NodeId = new CswPrimaryKey("nodes", CswConvert.ToInt32(Row["nodeid"]));
                        CswNbtNode    Node   = _CswNbtSchemaModTrnsctn.Nodes[NodeId];
                        if (null != Node)
                        {
                            Int32 NodeTypePropId = CswConvert.ToInt32(Row["nodetypepropid"]);

                            CswNbtNodePropWrapper PropWrapper = Node.Properties[NodeTypePropId];
                            if (null != PropWrapper)
                            {
                                if (PropWrapper.Empty)
                                {
                                    PropWrapper.SetDefaultValue();
                                }
                            }
                            Node.postChanges(ForceUpdate: false);
                        }
                    }
                }
            }
        }
예제 #5
0
        } // getPercentDone()

        /// <summary>
        /// Run the next iteration of this batch operation
        /// </summary>
        public void runBatchOp(CswNbtObjClassBatchOp BatchNode)
        {
            if (BatchNode != null && BatchNode.OpNameValue == CswEnumNbtBatchOpName.BulkEdit)
            {
                try
                {
                    bool NoErrors = true;
                    BatchNode.start();

                    BulkEditBatchData BatchData = new BulkEditBatchData(BatchNode.BatchData.Text);

                    if (BatchData.CurrentRow < BatchData.TotalRows)
                    {
                        if (null != BatchData.excelData.Columns["nodeid"])
                        {
                            int   NodesProcessedPerIteration = CswConvert.ToInt32(_CswNbtResources.ConfigVbls.getConfigVariableValue(CswEnumConfigurationVariableNames.NodesProcessedPerCycle));
                            Int32 r;
                            for (r = BatchData.CurrentRow; r < BatchData.excelData.Rows.Count && (r - BatchData.CurrentRow) < NodesProcessedPerIteration && NoErrors; r++)
                            {
                                try
                                {
                                    DataRow row = BatchData.excelData.Rows[r];

                                    CswPrimaryKey NodeId = new CswPrimaryKey();
                                    NodeId.FromString(row["nodeid"].ToString());
                                    if (CswTools.IsPrimaryKey(NodeId))
                                    {
                                        CswNbtNode Node = _CswNbtResources.Nodes[NodeId];
                                        if (null != Node)
                                        {
                                            foreach (DataColumn col in BatchData.excelData.Columns)
                                            {
                                                if (NoErrors)
                                                {
                                                    try
                                                    {
                                                        if (col.ColumnName != "nodeid")
                                                        {
                                                            CswNbtMetaDataNodeTypeProp Prop = Node.getNodeType().getNodeTypeProp(col.ColumnName);
                                                            CswNbtSubField             SubField;
                                                            if (null != Prop)
                                                            {
                                                                SubField = Prop.getFieldTypeRule().SubFields.Default;
                                                            }
                                                            else
                                                            {
                                                                string propName     = col.ColumnName.Substring(0, col.ColumnName.LastIndexOf(" "));
                                                                string subFieldName = col.ColumnName.Substring(col.ColumnName.LastIndexOf(" ") + 1);
                                                                Prop     = Node.getNodeType().getNodeTypeProp(propName);
                                                                SubField = Prop.getFieldTypeRule().SubFields[(CswEnumNbtSubFieldName)subFieldName];
                                                            }
                                                            Node.Properties[Prop].SetSubFieldValue(SubField, row[col.ColumnName]);
                                                        } // if( col.ColumnName != "nodeid" )
                                                    }     // try
                                                    catch (Exception ex)
                                                    {
                                                        BatchNode.error(ex, "Error on row: " + (r + 1).ToString() + ", column: " + col.ColumnName + "; ");
                                                        NoErrors = false;
                                                    }
                                                }
                                            } // foreach( DataColumn col in BatchData.excelData.Columns )
                                        }     // if( null != Node )
                                        Node.postChanges(false);
                                    }         // if( CswTools.IsPrimaryKey( NodeId ) )
                                }             // try
                                catch (Exception ex)
                                {
                                    BatchNode.error(ex, "Error on row: " + (r + 1).ToString() + "; ");
                                    NoErrors = false;
                                }
                            } // for

                            if (NoErrors)
                            {
                                // Setup for next iteration
                                BatchData.CurrentRow        = r;
                                BatchNode.BatchData.Text    = BatchData.ToString();
                                BatchNode.PercentDone.Value = getPercentDone(BatchNode);
                            }
                        } // if( null != BatchData.excelData.Columns["nodeid"] )
                    }     // if(BatchData.CurrentRow < BatchData.TotalRows)
                    else
                    {
                        BatchNode.finish();
                    }
                    BatchNode.postChanges(false);
                }
                catch (Exception ex)
                {
                    BatchNode.error(ex);
                }
            } // if( BatchNode != null && BatchNode.OpNameValue == NbtBatchOpName.MultiEdit )
        }     // runBatchOp()
예제 #6
0
        private void _updateInspectionNode(CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection Inspection, CswNbtSdInspectionsDataModels.InspectionUpdateData UpdateCollection)
        {
            if (Int32.MinValue != Inspection.InspectionId)
            {
                CswPrimaryKey InspectionPk   = new CswPrimaryKey("nodes", Inspection.InspectionId);
                CswNbtNode    InspectionNode = _CswNbtResources.Nodes.GetNode(InspectionPk, Inspection.DesignId);
                if (null != InspectionNode)
                {
                    CswNbtObjClassInspectionDesign NodeAsDesign = (CswNbtObjClassInspectionDesign)InspectionNode;
                    if (NodeAsDesign.Status.Value == Completed || NodeAsDesign.Status.Value == CompletedLate)
                    {
                        UpdateCollection.Completed.Add(Inspection);
                    }
                    else if (NodeAsDesign.Status.Value == Cancelled)
                    {
                        UpdateCollection.Cancelled.Add(Inspection);
                    }
                    else if (NodeAsDesign.Status.Value == Missed)
                    {
                        UpdateCollection.Missed.Add(Inspection);
                    }
                    else
                    {
                        Inspection.Counts = new CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionCounts();
                        /* We loop once to set the property values */
                        CswNbtMetaDataNodeType InspectionNt = InspectionNode.getNodeType();
                        if (null != InspectionNt)
                        {
                            //Can edit the nodetype
                            if (_CswNbtResources.Permit.canNodeType(CswEnumNbtNodeTypePermission.Edit, InspectionNt))
                            {
                                foreach (CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionAnswer Question in Inspection.Questions)
                                {
                                    CswNbtMetaDataNodeTypeProp Ntp = InspectionNt.getNodeTypeProp(Question.QuestionId);
                                    if (null != Ntp && null != Ntp.FirstEditLayout)
                                    {
                                        CswNbtMetaDataNodeTypeTab Tab = InspectionNt.getNodeTypeTab(Ntp.FirstEditLayout.TabId);
                                        if (null != Tab)
                                        {
                                            bool CanEdit = (
                                                _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, InspectionNt, Tab) ||
                                                _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, Ntp, Tab)
                                                );

                                            CswNbtNodePropQuestion PropAsQuestion = InspectionNode.Properties[Ntp];
                                            if (CanEdit)
                                            {
                                                PropAsQuestion.Answer           = Question.Answer;
                                                PropAsQuestion.CorrectiveAction = Question.CorrectiveAction;
                                                DateTime DateAnswered = CswConvert.ToDateTime(Question.DateAnswered);
                                                if (DateTime.MinValue != DateAnswered)
                                                {
                                                    PropAsQuestion.DateAnswered = DateAnswered;
                                                }
                                                DateTime DateCorrected = CswConvert.ToDateTime(Question.DateCorrected);
                                                if (DateTime.MinValue != DateCorrected)
                                                {
                                                    PropAsQuestion.DateCorrected = DateCorrected;
                                                }
                                                PropAsQuestion.Comments = Question.Comments;
                                            }
                                            if (false == string.IsNullOrEmpty(Question.Answer))
                                            {
                                                Inspection.Counts.Answered += 1;
                                            }
                                            else
                                            {
                                                Inspection.Counts.UnAnswered += 1;
                                            }
                                            if (false == PropAsQuestion.IsCompliant)
                                            {
                                                Inspection.Counts.Ooc += 1;
                                            }
                                            Inspection.Counts.Total += 1;
                                        }
                                    }
                                }
                                InspectionNode.postChanges(true);
                                if (false == string.IsNullOrEmpty(Inspection.Action) && (Inspection.Action.ToLower() == "finish" || Inspection.Action.ToLower() == "cancel"))
                                {
                                    CswNbtMetaDataNodeTypeProp ButtonNtp = null;
                                    if (Inspection.Action.ToLower() == "finish")
                                    {
                                        ButtonNtp = InspectionNode.getNodeType().getNodeTypeProp(CswNbtObjClassInspectionDesign.PropertyName.Finish);
                                    }
                                    else if (Inspection.Action.ToLower() == "cancel")
                                    {
                                        ButtonNtp = InspectionNode.getNodeType().getNodeTypeProp(CswNbtObjClassInspectionDesign.PropertyName.Cancel);
                                    }

                                    if (null != ButtonNtp && null != ButtonNtp.FirstEditLayout)
                                    {
                                        CswNbtMetaDataNodeTypeTab ButtonTab = _CswNbtResources.MetaData.getNodeTypeTab(ButtonNtp.FirstEditLayout.TabId);
                                        if (null != ButtonTab &&
                                            (
                                                _CswNbtResources.Permit.canTab(CswEnumNbtNodeTypePermission.Edit, InspectionNt, NodeTypeTab: ButtonTab) ||
                                                _CswNbtResources.Permit.isPropWritable(CswEnumNbtNodeTypePermission.Edit, ButtonNtp, ButtonTab)
                                            )
                                            )
                                        {
                                            _InspectionDesignOc = _InspectionDesignOc ?? _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.InspectionDesignClass);
                                            CswNbtObjClass NbtObjClass = CswNbtObjClassFactory.makeObjClass(_CswNbtResources, _InspectionDesignOc, InspectionNode);
                                            CswNbtObjClass.NbtButtonData ButtonData = new CswNbtObjClass.NbtButtonData(ButtonNtp);
                                            NbtObjClass.triggerOnButtonClick(ButtonData);
                                        }
                                    }
                                }
                            }
                        }
                        /* Reinit since state has changed. */
                        NodeAsDesign = InspectionNode;

                        if (NodeAsDesign.Status.Value == Completed || NodeAsDesign.Status.Value == CompletedLate)
                        {
                            /* Nothing to do */
                        }
                        else if (NodeAsDesign.Status.Value == ActionRequired)
                        {
                            Inspection.Status = NodeAsDesign.Status.Value;
                            /* We loop again to modify the return with the status of the Inspection per QuestionAnswer */
                            foreach (CswNbtSdInspectionsDataModels.InspectionData.CswNbtInspection.QuestionAnswer Question in Inspection.Questions)
                            {
                                Question.Status = NodeAsDesign.Status.Value;
                            }
                            /* In case the Inspection has been modified by someone else */
                            Inspection.DueDateAsDate       = NodeAsDesign.InspectionDate.DateTimeValue;
                            Inspection.InspectionPointName = NodeAsDesign.Target.CachedNodeName;
                            Inspection.LocationPath        = NodeAsDesign.Location.CachedValue;
                            UpdateCollection.ActionRequired.Add(Inspection);
                        }
                        else
                        {
                            UpdateCollection.InComplete.Add(Inspection);
                        }
                    }
                }
            }
        }
예제 #7
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()