public static void getExternalImage(ICswResources CswResources, ExternalImageRet Return, ACDSearchParams ACDSearchParams) { CswNbtResources _CswNbtResources = (CswNbtResources)CswResources; CswC3SearchParams CswC3SearchParams = new CswC3SearchParams(); CswC3SearchParams.ACDSearchParams = ACDSearchParams; CswC3Product C3ProductDetails = new CswC3Product(); CswNbtC3ClientManager CswNbtC3ClientManager = new CswNbtC3ClientManager(_CswNbtResources, CswC3SearchParams); SearchClient C3SearchClient = CswNbtC3ClientManager.initializeC3Client(); if (null != C3SearchClient) { CswRetObjSearchResults SearchResults = C3SearchClient.getACDMolImage(CswC3SearchParams); if (null != SearchResults.CswC3SearchResults && SearchResults.CswC3SearchResults.Length > 0) { C3ProductDetails = SearchResults.CswC3SearchResults[0]; } } if (String.IsNullOrEmpty(C3ProductDetails.MolImage)) { CswNbtMetaDataObjectClass ChemicalOC = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ChemicalClass); Return.Data = File.ReadAllBytes(AppDomain.CurrentDomain.BaseDirectory + CswNbtMetaDataObjectClass.IconPrefix100 + ChemicalOC.IconFileName); } else { Return.Data = Convert.FromBase64String(C3ProductDetails.MolImage); } }
}//RunC3FilteredSearch() public static void GetC3ProductDetails(ICswResources CswResources, CswNbtC3SearchReturn Return, CswC3SearchParams CswC3SearchParams) { CswNbtResources _CswNbtResources = (CswNbtResources)CswResources; CswNbtC3ClientManager CswNbtC3ClientManager = new CswNbtC3ClientManager(_CswNbtResources, CswC3SearchParams); SearchClient C3SearchClient = CswNbtC3ClientManager.initializeC3Client(); if (null != C3SearchClient) { // For now, the only option here is C3 CswC3SearchParams.DataService = CswNbtC3ClientManager.DataService; CswRetObjSearchResults SearchResults = C3SearchClient.getProductDetails(CswC3SearchParams); if (SearchResults.CswC3SearchResults.Length > 0) { CswC3Product C3ProductDetails = SearchResults.CswC3SearchResults[0]; Return.Data.ProductDetails = C3ProductDetails; } } }
public ImportManager(CswNbtResources CswNbtResources, CswC3Product ProductToImport) { _CswNbtResources = CswNbtResources; _ProductToImport = ProductToImport; _initMappings(); }
public static C3CreateMaterialResponse importC3Product(ICswResources CswResources, CswNbtC3Import.Request Request) { C3CreateMaterialResponse ret = new C3CreateMaterialResponse(); CswNbtResources _CswNbtResources = (CswNbtResources)CswResources; CswC3SearchParams CswC3SearchParams = new CswC3SearchParams(); CswC3Product C3ProductDetails = new CswC3Product(); if (Int32.MinValue != Request.Cdbregno && Int32.MinValue != Request.C3ProductId) { CswC3SearchParams.ACDSearchParams = new ACDSearchParams(); CswC3SearchParams.ACDSearchParams.ProductId = Request.C3ProductId; CswC3SearchParams.ACDSearchParams.Cdbregno = Request.Cdbregno; } else if (Int32.MinValue != Request.C3ProductId) { CswC3SearchParams.C3SearchParams = new C3SearchParams(); CswC3SearchParams.C3SearchParams.ProductId = Request.C3ProductId; } else { throw new CswDniException(CswEnumErrorType.Error, "Cannot run import, missing parameters.", "Cannot import C3 or ACD data without a Product Id or CdbRegNo."); } CswNbtC3ClientManager CswNbtC3ClientManager = new CswNbtC3ClientManager(_CswNbtResources, CswC3SearchParams); SearchClient C3SearchClient = CswNbtC3ClientManager.initializeC3Client(); if (null != C3SearchClient) { // Perform C3 search to get the product details CswRetObjSearchResults SearchResults = C3SearchClient.getProductDetails(CswC3SearchParams); if (SearchResults.CswC3SearchResults.Length > 0) { C3ProductDetails = SearchResults.CswC3SearchResults[0]; string NodeTypeName = Request.NodeTypeName; if (false == string.IsNullOrEmpty(NodeTypeName)) { CswNbtMetaDataNodeType NodeTypeToBeImported = _CswNbtResources.MetaData.getNodeType(NodeTypeName); if (null != NodeTypeToBeImported) { // Instance the ImportManger ImportManager C3Import = new ImportManager(_CswNbtResources, C3ProductDetails); // Create the temporary material node CswNbtPropertySetMaterial C3ProductTempNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(NodeTypeToBeImported.NodeTypeId, IsTemp : true, OnAfterMakeNode : delegate(CswNbtNode NewNode) { //Set the c3productid property ((CswNbtPropertySetMaterial)NewNode).C3ProductId.Text = C3ProductDetails.ProductId.ToString(); // Add props to the tempnode C3Import.addNodeTypeProps(NewNode); // Sync Hazard Classes and PCID data if C3ProductTempNode is of type Chemical if (NewNode.getObjectClass().ObjectClass == CswEnumNbtObjectClass.ChemicalClass) { CswNbtObjClassChemical ChemicalNode = NewNode; ChemicalNode.syncFireDbData(); ChemicalNode.syncPCIDData(); } //C3ProductTempNode.postChanges( false ); }); // Get or create a vendor node C3CreateMaterialResponse.State.Supplier Supplier = C3Import.constructVendorObject(C3ProductDetails.SupplierName); // Create size node(s) Collection <C3CreateMaterialResponse.State.SizeRecord> ProductSizes = C3Import.constructSizeObjects(); // Create synonyms node(s) C3Import.createMaterialSynonyms(C3ProductTempNode); // Create a document node if C3ProductTempNode is of type Chemical CswPrimaryKey SDSDocumentNodeId = new CswPrimaryKey(); if (C3ProductTempNode.ObjectClass.ObjectClass == CswEnumNbtObjectClass.ChemicalClass) { SDSDocumentNodeId = C3Import.createMaterialDocument(C3ProductTempNode); } #region Return Object ret.success = true; ret.actionname = "create material"; C3CreateMaterialResponse.State.MaterialType MaterialType = new C3CreateMaterialResponse.State.MaterialType(); MaterialType.name = Request.NodeTypeName; MaterialType.val = Request.NodeTypeId; C3CreateMaterialResponse.State State = new C3CreateMaterialResponse.State(); State.materialId = C3ProductTempNode.NodeId.ToString(); State.tradeName = C3ProductTempNode.TradeName.Text; State.partNo = C3ProductTempNode.PartNumber.Text; ret.state = State; //State.useExistingTempNode = true; State.supplier = Supplier; if (string.IsNullOrEmpty(State.supplier.val)) { State.addNewC3Supplier = true; } State.materialType = MaterialType; State.sizes = ProductSizes; if (null != SDSDocumentNodeId) { State.sds.sdsDocId = SDSDocumentNodeId.ToString(); } #endregion Return Object } //if (null != NodeTypeToBeImported) } //if( false == string.IsNullOrEmpty( NodeTypeName ) ) } //if( SearchResults.CswC3SearchResults.Length > 0 ) } //if( null != C3SearchClient ) return(ret); }//importC3Product()
} // _populateDictionary() /// <summary> /// FOR DISPLAYING CHEMCAT RESULTS /// </summary> /// <param name="C3SearchResultsObj"></param> /// <param name="PropsToHide"></param> /// <returns></returns> private Int32 _populateDictionary( CswRetObjSearchResults C3SearchResultsObj, Collection<string> PropsToHide, string DataService ) { Int32 results = 0; for( int i = 0; i < C3SearchResultsObj.CswC3SearchResults.Count(); i++ )//todo: if results are null { TableNode thisNode = new TableNode(); //Note: For now, we are hardcoding the nodetype as "Chemical" for each results from ChemCatCentral. thisNode.NodeType = _CswNbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.ChemicalClass ).FirstNodeType; if( null != thisNode.NodeType ) { // default image, overridden below if( thisNode.NodeType.IconFileName != string.Empty ) { thisNode.ThumbnailUrl = CswNbtMetaDataObjectClass.IconPrefix100 + thisNode.NodeType.IconFileName; } else { thisNode.ThumbnailUrl = "Images/icons/300/_placeholder.gif"; } thisNode.AllowView = _CswNbtResources.Permit.canAnyTab( Security.CswEnumNbtNodeTypePermission.View, thisNode.NodeType ); thisNode.AllowEdit = _CswNbtResources.Permit.canAnyTab( Security.CswEnumNbtNodeTypePermission.Edit, thisNode.NodeType ); //C3 results are not nodes and hence they can't be deleted. thisNode.AllowDelete = false; //C3 results CAN however be imported into Nbt IF the user has Create Material Permissions thisNode.AllowImport = _CswNbtResources.Permit.can( CswEnumNbtActionName.Create_Material, _CswNbtResources.CurrentNbtUser ); thisNode.AllowRequest = _CswNbtResources.Permit.can( CswEnumNbtActionName.Submit_Request, _CswNbtResources.CurrentNbtUser ); // Properties int propIndex = 0; CswC3Product[] products = C3SearchResultsObj.CswC3SearchResults; CswC3Product product = products[i]; JObject productObject = JObject.FromObject( product ); IEnumerable properties = productObject.Properties(); foreach( JProperty prop in properties ) { string name = prop.Name; string value = prop.Value.ToString(); if( prop.Name == "TradeName" ) { thisNode.NodeName = prop.Value.ToString(); } if( prop.Name == "ProductId" ) { thisNode.C3ProductId = CswConvert.ToInt32( prop.Value ); } if( prop.Name == "Cdbregno" ) { thisNode.ACDCdbregno = CswConvert.ToInt32( prop.Value ); } TableProp thisProp = new TableProp(); if( PropsToHide == null || false == PropsToHide.Contains( name ) ) { thisProp.PropName = name; thisProp.Gestalt = value; thisNode.Props.Add( propIndex, thisProp ); } propIndex++; } // Thumbnail image -- set to molimage if we have one if( DataService.Equals( "C3" ) && false == String.IsNullOrEmpty( product.MolImage ) ) { thisNode.ThumbnailBase64Str = "data:image/jpeg;base64," + product.MolImage; } else if( DataService.Equals( "ACD" ) ) { thisNode.ThumbnailUrl = "Services/BlobData/getExternalImage?cdbregno=" + thisNode.ACDCdbregno + "&productid=" + product.ProductId + "&uid=" + CswRandom.RandomString(); } if( false == _TableDict.ContainsKey( thisNode.NodeType ) ) { _TableDict.Add( thisNode.NodeType, new Collection<TableNode>() ); } _TableDict[thisNode.NodeType].Add( thisNode ); results++; }//if (null != thisNode.NodeType) }//for( int i = 0; i < C3SearchResultsObj.CswC3SearchResults.Count(); i++ ) return results; } // _populateDictionary()