public bool AdminUpdateArtifactsWithHeaderForUploadedDSD(string requestParam) { bool RetVal = false; string DbNId = string.Empty; string[] Params; string DBConnectionsFile = string.Empty; string DBFile = string.Empty; XmlDocument UploadedHeaderXml = new XmlDocument(); XmlDocument XmlDoc; XmlNodeList XmlNodes; string UploadedHeaderFileWPath = string.Empty; string UploadedHeaderFolderPath = Server.MapPath("../../stock/data"); string UploadedHeaderName = string.Empty; string UserNId = string.Empty; string DatabaseNIdfor2_1 = string.Empty; try { Params = Global.SplitString(requestParam, Constants.Delimiters.ParamDelimiter); DbNId = Params[0]; UserNId = Params[1]; UploadedHeaderFileWPath = UploadedHeaderFolderPath + "/" + DbNId + "/" + "sdmx" + "/" + DevInfo.Lib.DI_LibSDMX.Constants.Header.FileName; DBFile = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, ConfigurationManager.AppSettings[Constants.WebConfigKey.DBConnectionsFile]); XmlDoc = new XmlDocument(); XmlDoc.Load(DBFile); XmlNodes = XmlDoc.GetElementsByTagName("db"); for (int i = 0; i < XmlNodes.Count; i++) { if ((XmlNodes[i].Attributes["sdmxdb"].Value == "false") && (XmlNodes[i].Attributes[Constants.XmlFile.Db.Tags.DatabaseAttributes.Id] != null)) { DatabaseNIdfor2_1 = XmlNodes[i].Attributes[Constants.XmlFile.Db.Tags.DatabaseAttributes.Id].Value; } } UploadedHeaderXml.Load(UploadedHeaderFileWPath); SDMXApi_2_0.Message.StructureType UploadedDSDStructure = new SDMXApi_2_0.Message.StructureType(); SDMXApi_2_0.Message.HeaderType Header = new SDMXApi_2_0.Message.HeaderType(); UploadedDSDStructure = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXml); Header = UploadedDSDStructure.Header; UploadedHeaderFolderPath = UploadedHeaderFolderPath + "/" + DbNId; RetVal = UpdateCompleteWithHeader(Header, DbNId, UserNId, UploadedHeaderFolderPath + "/" + "sdmx"); RetVal = UpdateCodelistsForUploadedDSDWithHeader(Header, DbNId, UserNId, UploadedHeaderFolderPath + "/" + "sdmx" + "/" + "Codelists"); RetVal = UpdateCategorySchemeForUploadedDSDWithHeader(DbNId, UserNId, DatabaseNIdfor2_1); RetVal = UpdateArtefactsForUploadedDSDWithHeader(Header, DbNId, UserNId, UploadedHeaderFolderPath + "/" + "sdmx", DatabaseNIdfor2_1); RetVal = UpdateNonMAForUploadedDSDWithHeader(DbNId, UserNId, DatabaseNIdfor2_1); } catch (Exception ex) { RetVal = false; Global.CreateExceptionString(ex, null); } finally { } return RetVal; }
public string GetDataForGenerateApiCall(string requestParam) { string RetVal; string[] Params; int DBNId; string SelectedFunction; string Id; string AgencyId; string Version; string UserIdAndType; string UploadedHeaderFileWPath, UploadedHeaderFolderPath; Registry.RegistryService Service; SDMXObjectModel.Message.StructureHeaderType Header; SDMXApi_2_0.Message.HeaderType Header_2_0; XmlDocument Query; XmlElement Element; XmlDocument Response; XmlDocument UploadedHeaderXml; string agencyId; List<bool> isSOAPMailIds; List<string> notificationMailIds; List<bool> isSOAPHTTPs; List<string> notificationHTTPs; DateTime startDate; DateTime endDate; string eventSelector; Dictionary<string, string> dictCategories; string mfdId; string CategoriesGIDAndSchemeIds; string CategoryGID; string CategorySchemeId; string DFDOrMFDId; string WebServiceURL; bool IsREST; string WADLURL; bool IsSOAP; string WSDLURL; string FileURL; string RequestURL; string ResponseURL; string preferredLangNid; string[] DBDetails; string checkIfSDMXDB; RetVal = string.Empty; Params = null; DBNId = -1; SelectedFunction = string.Empty; Id = string.Empty; AgencyId = string.Empty; Version = string.Empty; UserIdAndType = string.Empty; Service = new Registry.RegistryService(); Service.Url = HttpContext.Current.Request.Url.OriginalString.Substring(0, HttpContext.Current.Request.Url.OriginalString.IndexOf("libraries")) + Constants.FolderName.SDMX.RegistryServicePath; Query = new XmlDocument(); Response = new XmlDocument(); Element = null; agencyId = string.Empty; isSOAPMailIds = new List<bool>(); notificationMailIds = new List<string>(); isSOAPHTTPs = new List<bool>(); notificationHTTPs = new List<string>(); startDate = new DateTime(); endDate = new DateTime(); eventSelector = string.Empty; dictCategories = new Dictionary<string, string>(); mfdId = string.Empty; CategoriesGIDAndSchemeIds = string.Empty; CategoryGID = string.Empty; CategorySchemeId = string.Empty; DFDOrMFDId = string.Empty; WebServiceURL = string.Empty; IsREST = false; WADLURL = string.Empty; IsSOAP = false; WSDLURL = string.Empty; FileURL = string.Empty; RequestURL = string.Empty; ResponseURL = string.Empty; preferredLangNid = string.Empty; DBDetails = null; checkIfSDMXDB = string.Empty; Header = new SDMXObjectModel.Message.StructureHeaderType(); Header_2_0 = new SDMXApi_2_0.Message.HeaderType(); UploadedHeaderXml = new XmlDocument(); UploadedHeaderFolderPath = Server.MapPath("../../stock/data"); try { Params = Global.SplitString(requestParam, Constants.Delimiters.ParamDelimiter); DBNId = Convert.ToInt32(Params[0].ToString().Trim()); SelectedFunction = Params[1].ToString().Trim(); DBDetails = Global.GetDbConnectionDetails(Convert.ToString(DBNId)); checkIfSDMXDB = DBDetails[4].ToString(); UploadedHeaderFileWPath = UploadedHeaderFolderPath + "/" + DBNId + "/" + "sdmx" + "/" + DevInfo.Lib.DI_LibSDMX.Constants.Header.FileName; if (File.Exists(UploadedHeaderFileWPath)) { UploadedHeaderXml.Load(UploadedHeaderFileWPath); if (checkIfSDMXDB == "true") { SDMXApi_2_0.Message.StructureType UploadedDSDStructure = new SDMXApi_2_0.Message.StructureType(); UploadedDSDStructure = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXml); Header_2_0 = UploadedDSDStructure.Header; } else { SDMXObjectModel.Message.StructureType UploadedDSDStructure = new SDMXObjectModel.Message.StructureType(); UploadedDSDStructure = (SDMXObjectModel.Message.StructureType)SDMXObjectModel.Deserializer.LoadFromXmlDocument(typeof(SDMXObjectModel.Message.StructureType), UploadedHeaderXml); Header = UploadedDSDStructure.Header; } } if ((SelectedFunction == "QuerySubscription") || (SelectedFunction == "QueryRegistration")) { UserIdAndType = Params[2].ToString().Trim(); } else if (SelectedFunction == "SubmitSubscription") { UserIdAndType = Params[2].ToString().Trim(); if (Params[3].ToString().Trim() == "0") { isSOAPMailIds = new List<bool>(); isSOAPMailIds.Add(false); isSOAPHTTPs = new List<bool>(); isSOAPHTTPs.Add(false); } else { isSOAPMailIds = new List<bool>(); isSOAPMailIds.Add(true); isSOAPHTTPs = new List<bool>(); isSOAPHTTPs.Add(true); } notificationMailIds = new List<string>(); notificationMailIds.Add(Params[4].ToString().Trim()); notificationHTTPs = new List<string>(); notificationHTTPs.Add(Params[5].ToString().Trim()); startDate = DateTime.ParseExact(Params[6].ToString().Trim(), "dd-MM-yyyy", null); endDate = DateTime.ParseExact(Params[7].ToString().Trim(), "dd-MM-yyyy", null); eventSelector = Params[8].ToString().Trim(); CategoriesGIDAndSchemeIds = Params[9].ToString().Trim(); dictCategories = new Dictionary<string, string>(); if (eventSelector == "Data Registration") { foreach (string CategoryGIDAndSchemeId in Global.SplitString(CategoriesGIDAndSchemeIds, ",")) { CategoryGID = CategoryGIDAndSchemeId.Split('|')[0]; CategorySchemeId = CategoryGIDAndSchemeId.Split('|')[1]; dictCategories.Add(CategoryGID, CategorySchemeId); } } agencyId = Global.Get_AgencyId_From_DFD(DBNId.ToString()); mfdId = Params[10].ToString().Trim(); preferredLangNid = Params[11].ToString().Trim(); } else if (SelectedFunction == "SubmitRegistration") { UserIdAndType = Params[2].ToString().Trim(); agencyId = Global.Get_AgencyId_From_DFD(DBNId.ToString()); DFDOrMFDId = Params[3].ToString().Trim(); FileURL = Params[4].ToString().Trim(); } else { Id = Params[2].ToString().Trim(); AgencyId = Params[3].ToString().Trim(); Version = Params[4].ToString().Trim(); } Service.Url += "?p=" + DBNId.ToString(); RetVal = Service.Url; RetVal += Constants.Delimiters.ParamDelimiter + SelectedFunction; switch (SelectedFunction) { case "GetDataflow": Query = GetQueryXmlDocumentOnTypeBasis(0, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetDataflow(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetMetadataflow": Query = GetQueryXmlDocumentOnTypeBasis(1, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetMetadataflow(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetDataStructure": Query = GetQueryXmlDocumentOnTypeBasis(2, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetDataStructure(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetMetadataStructure": Query = GetQueryXmlDocumentOnTypeBasis(3, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetMetadataStructure(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetCategoryScheme": Query = GetQueryXmlDocumentOnTypeBasis(4, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetCategoryScheme(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetCategorisation": Query = GetQueryXmlDocumentOnTypeBasis(5, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetCategorisation(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetConceptScheme": Query = GetQueryXmlDocumentOnTypeBasis(6, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetConceptScheme(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetCodelist": Query = GetQueryXmlDocumentOnTypeBasis(7, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetCodelist(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetOrganisationScheme": Query = GetQueryXmlDocumentOnTypeBasis(8, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetOrganisationScheme(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetProvisionAgreement": Query = GetQueryXmlDocumentOnTypeBasis(9, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetProvisionAgreement(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetConstraint": Query = GetQueryXmlDocumentOnTypeBasis(10, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetConstraint(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetStructures": Query = GetQueryXmlDocumentOnTypeBasis(11, Id, AgencyId, Version, string.Empty); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.GetStructures(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "QuerySubscription": Query = GetQueryXmlDocumentOnTypeBasis(12, Id, AgencyId, Version, UserIdAndType); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.QuerySubscription(ref Element); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "QueryRegistration": Query = GetQueryXmlDocumentOnTypeBasis(13, Id, AgencyId, Version, UserIdAndType); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.QueryRegistration(ref Element,preferredLangNid); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "SubmitSubscription": Query = GetQueryXmlDocumentForSubmitSubscription(ActionType.Append, UserIdAndType, agencyId, isSOAPMailIds, notificationMailIds, isSOAPHTTPs, notificationHTTPs, startDate, endDate, eventSelector, dictCategories, mfdId, string.Empty,Header); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.SubmitSubscription(ref Element, preferredLangNid);//language code Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "SubmitRegistration": Query = GetQueryXmlDocumentForSubmitRegistration(UserIdAndType, agencyId, DFDOrMFDId, WebServiceURL, IsREST, WADLURL, IsSOAP, WSDLURL, FileURL); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Query); Element = Query.DocumentElement; Service.SubmitRegistration(ref Element, string.Empty, preferredLangNid); Response.LoadXml(Element.OuterXml); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); RequestURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Query)); ResponseURL = SaveContentTemporarilyandDeleteOtherFiles(this.Get_Formatted_XML(Response)); RetVal += Constants.Delimiters.ParamDelimiter + RequestURL; RetVal += Constants.Delimiters.ParamDelimiter + ResponseURL; break; case "GetGenericData": break; case "GetGenericTimeSeriesData": break; case "GetStructureSpecificData": break; case "GetStructureSpecificTimeSeriesData": break; case "GetGenericMetadata": break; case "GetStructureSpecificMetadata": break; case "SubmitStructure": break; case "GetReportingTaxonomy": break; case "GetStructureSet": break; case "GetProcess": break; case "GetHierarchicalCodelist": break; case "GetDataSchema": break; case "GetMetadataSchema": break; default: break; } } catch (SoapException SOAPex) { Response.LoadXml(SOAPex.Detail.InnerText); RetVal += Constants.Delimiters.ParamDelimiter + this.Get_Formatted_XML(Response); Global.CreateExceptionString(SOAPex, null); } catch (Exception ex) { RetVal += "false" + Constants.Delimiters.ParamDelimiter + ex.Message; Global.CreateExceptionString(ex, null); } finally { } return RetVal; }
public MessageType() { this.headerField = new HeaderType(); }
private bool UpdateNonMAForUploadedDSDWithHeader(string DbNId, string UserNId, string DataBaseNId) { bool RetVal; SDMXObjectModel.Message.RegistryInterfaceType Registrations; SDMXApi_2_0.Message.GenericMetadataType MetadataFiles; //SDMXObjectModel.Message.GenericDataType DataFiles; SDMXApi_2_0.Message.CompactDataType DataFiles; SDMXObjectModel.Message.RegistryInterfaceType Subscriptions; RetVal = true; string UploadedHeaderFileWPath = string.Empty; string UploadedHeaderFolderPath = Server.MapPath("../../stock/data"); string UploadedDSDHeaderFilePath = string.Empty; string UploadedHeaderName = string.Empty; string SubscriptionsFolderPath = string.Empty; string MetadataFolderPath = string.Empty; string RegistrationsFolderPath = string.Empty; string SDMXMLFolderPath = string.Empty; string MappingFolderPath = string.Empty; XmlDocument UploadedHeaderXml = new XmlDocument(); XmlDocument UploadedHeaderXmlFor2_0 = new XmlDocument(); FileInfo[] Files = null; DirectoryInfo dirRegs = null; DirectoryInfo dirMetadata = null; DirectoryInfo dirSubscriptions = null; DirectoryInfo dirSDMXML = null; try { UploadedHeaderFileWPath = UploadedHeaderFolderPath + "/" + DataBaseNId + "/" + "sdmx" + "/" + DevInfo.Lib.DI_LibSDMX.Constants.Header.FileName; UploadedDSDHeaderFilePath = UploadedHeaderFolderPath + "/" + DbNId + "/" + "sdmx" + "/" + DevInfo.Lib.DI_LibSDMX.Constants.Header.FileName; dirRegs = new DirectoryInfo(UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Registrations"); dirMetadata = new DirectoryInfo(UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Metadata"); dirSDMXML = new DirectoryInfo(UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "SDMX-ML"); dirSubscriptions = new DirectoryInfo(UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Subscriptions"); MappingFolderPath = UploadedHeaderFolderPath + "/" + DbNId + "/" + "sdmx" + "/" + "Mappings"; UploadedHeaderXml.Load(UploadedHeaderFileWPath); UploadedHeaderXmlFor2_0.Load(UploadedDSDHeaderFilePath); SDMXObjectModel.Message.StructureType UploadedDSDStructure = new SDMXObjectModel.Message.StructureType(); SDMXObjectModel.Message.StructureHeaderType Header = new SDMXObjectModel.Message.StructureHeaderType(); SDMXApi_2_0.Message.StructureType UploadedDSDStruct20 = new SDMXApi_2_0.Message.StructureType(); SDMXApi_2_0.Message.HeaderType DSDHeader = new SDMXApi_2_0.Message.HeaderType(); UploadedDSDStructure = (SDMXObjectModel.Message.StructureType)SDMXObjectModel.Deserializer.LoadFromXmlDocument(typeof(SDMXObjectModel.Message.StructureType), UploadedHeaderXml); Header = UploadedDSDStructure.Header; UploadedDSDStruct20 = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXmlFor2_0); DSDHeader = UploadedDSDStruct20.Header; foreach (DirectoryInfo dirReg in dirRegs.GetDirectories()) { Files = dirReg.GetFiles(); foreach (FileInfo regfile in Files) { Registrations = new SDMXObjectModel.Message.RegistryInterfaceType(); Registrations = (SDMXObjectModel.Message.RegistryInterfaceType)Deserializer.LoadFromFile(typeof(SDMXObjectModel.Message.RegistryInterfaceType), UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Registrations" + "\\" + dirReg.Name + "\\" + regfile.ToString()); Registrations.Header.ID = Header.ID.ToString(); Registrations.Header.Prepared = Header.Prepared.ToString(); foreach (PartyType receiver in Header.Receiver) { Registrations.Header.Receiver.Contact = receiver.Contact; Registrations.Header.Receiver.id = receiver.id; Registrations.Header.Receiver.Name = receiver.Name; } Registrations.Header.Sender = (SDMXObjectModel.Message.SenderType)Header.Sender; Registrations.Header.Test = Header.Test; Registrations.Footer = null; SDMXObjectModel.Serializer.SerializeToFile(typeof(SDMXObjectModel.Message.RegistryInterfaceType), Registrations, UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Registrations" + "\\" + dirReg.Name + "\\" + regfile.ToString()); } } foreach (DirectoryInfo dirMeta in dirMetadata.GetDirectories()) { Files = null; Files = dirMeta.GetFiles(); foreach (FileInfo metafile in Files) { MetadataFiles = new SDMXApi_2_0.Message.GenericMetadataType(); MetadataFiles = (SDMXApi_2_0.Message.GenericMetadataType)Deserializer.LoadFromFile(typeof(SDMXApi_2_0.Message.GenericMetadataType), UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Metadata" + "\\" + dirMeta.Name + "\\" + metafile.ToString()); MetadataFiles.Header.ID = DSDHeader.ID.ToString(); MetadataFiles.Header.Prepared = DSDHeader.Prepared.ToString(); MetadataFiles.Header.Receiver = DSDHeader.Receiver; MetadataFiles.Header.Sender = DSDHeader.Sender; MetadataFiles.Header.Test = DSDHeader.Test; SDMXApi_2_0.Serializer.SerializeToFile(typeof(SDMXApi_2_0.Message.GenericMetadataType), MetadataFiles, UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Metadata" + "\\" + dirMeta.Name + "\\" + metafile.ToString()); } } foreach (DirectoryInfo dirSDMX in dirSDMXML.GetDirectories()) { Files = null; Files = dirSDMX.GetFiles(); foreach (FileInfo sdmxMlFile in Files) { DataFiles = new SDMXApi_2_0.Message.CompactDataType(); DataFiles = (SDMXApi_2_0.Message.CompactDataType)Deserializer.LoadFromFile(typeof(SDMXApi_2_0.Message.CompactDataType), UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "SDMX-ML" + "\\" + dirSDMX.Name + "\\" + sdmxMlFile.ToString()); DataFiles.Header.ID = DSDHeader.ID.ToString(); DataFiles.Header.Prepared = Header.Prepared.ToString(); DataFiles.Header.Receiver = DSDHeader.Receiver; DataFiles.Header.Sender = DSDHeader.Sender; DataFiles.Header.Test = DSDHeader.Test; SDMXApi_2_0.Serializer.SerializeToFile(typeof(SDMXApi_2_0.Message.CompactDataType), DataFiles, UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "SDMX-ML" + "\\" + dirSDMX.Name + "\\" + sdmxMlFile.ToString()); } } foreach (DirectoryInfo dirSubs in dirSubscriptions.GetDirectories()) { Files = null; Files = dirSubs.GetFiles(); foreach (FileInfo subsFile in Files) { Subscriptions = new SDMXObjectModel.Message.RegistryInterfaceType(); Subscriptions = (SDMXObjectModel.Message.RegistryInterfaceType)Deserializer.LoadFromFile(typeof(SDMXObjectModel.Message.RegistryInterfaceType), UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Subscriptions" + "\\" + dirSubs.Name + "\\" + subsFile.ToString()); Subscriptions.Header.ID = Header.ID.ToString(); Subscriptions.Header.Prepared = Header.Prepared.ToString(); foreach (PartyType receiver in Header.Receiver) { Subscriptions.Header.Receiver.Contact = receiver.Contact; Subscriptions.Header.Receiver.id = receiver.id; Subscriptions.Header.Receiver.Name = receiver.Name; } Subscriptions.Header.Sender = (SDMXObjectModel.Message.SenderType)Header.Sender; Subscriptions.Header.Test = Header.Test; Subscriptions.Footer = null; SDMXObjectModel.Serializer.SerializeToFile(typeof(SDMXObjectModel.Message.RegistryInterfaceType), Subscriptions, UploadedHeaderFolderPath + "\\" + DbNId + "\\" + "sdmx" + "\\" + "Subscriptions" + "\\" + dirSubs.Name + "\\" + subsFile.ToString()); } } } catch (Exception ex) { RetVal = false; Global.CreateExceptionString(ex, null); //Global.WriteErrorsInLog("Creating CategoryScheme For Uploaded DSD From Admin"); //Global.WriteErrorsInLog(ex.StackTrace); //Global.WriteErrorsInLog(ex.Message); } finally { } return RetVal; }
private static void Send_Notifications_For_Current_Subscription(SubscriptionType Subscription, SDMXObjectModel.Registry.RegistrationType Registration, string HeaderFilePath = null) { string MessageContent; List<ArtefactInfo> Artefacts; DateTime CurrentDate; DateTime ValidityPeriodStartDate; DateTime ValidityPeriodEndDate; Header Header = new Header(); XmlDocument UploadedHeaderXml = new XmlDocument(); SDMXApi_2_0.Message.StructureType UploadedDSDStructure = new SDMXApi_2_0.Message.StructureType(); SDMXApi_2_0.Message.HeaderType Header_2_0 = new SDMXApi_2_0.Message.HeaderType(); if (File.Exists(HeaderFilePath)) { UploadedHeaderXml.Load(HeaderFilePath); UploadedDSDStructure = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXml); Header_2_0 = UploadedDSDStructure.Header; } try { if (string.IsNullOrEmpty(HeaderFilePath) == false) { Header.ID = Header_2_0.ID; Header.Name = Header_2_0.Name[0].Value.ToString(); foreach (SDMXApi_2_0.Message.PartyType Senders in Header_2_0.Sender) { Header.Sender.ID = Senders.id; Header.Sender.Name = !string.IsNullOrEmpty(Senders.Name[0].Value.ToString()) ? Senders.Name[0].Value.ToString() : string.Empty; foreach (SDMXApi_2_0.Message.ContactType Contacts in Senders.Contact) { Header.Sender.Contact.Department = !string.IsNullOrEmpty(Contacts.Department[0].Value.ToString()) ? Contacts.Department[0].Value.ToString() : string.Empty; Header.Sender.Contact.Email = !string.IsNullOrEmpty(Contacts.Items[1].ToString()) ? Contacts.Items[1].ToString() : string.Empty; Header.Sender.Contact.Fax = !string.IsNullOrEmpty(Contacts.Items[2].ToString()) ? Contacts.Items[2].ToString() : string.Empty; Header.Sender.Contact.Name = !string.IsNullOrEmpty(Contacts.Name[0].Value.ToString()) ? Contacts.Name[0].Value.ToString() : string.Empty; Header.Sender.Contact.Role = !string.IsNullOrEmpty(Contacts.Role[0].Value.ToString()) ? Contacts.Role[0].Value.ToString() : string.Empty; Header.Sender.Contact.Telephone = !string.IsNullOrEmpty(Contacts.Items[0].ToString()) ? Contacts.Items[0].ToString() : string.Empty; } } foreach (SDMXApi_2_0.Message.PartyType Receiver in Header_2_0.Receiver) { Header.Receiver.ID = Receiver.id; if (string.IsNullOrEmpty(Convert.ToString(Receiver.Name[0].Value)) == false) { Header.Receiver.Name = !string.IsNullOrEmpty(Receiver.Name[0].Value.ToString()) ? Receiver.Name[0].Value.ToString() : string.Empty; foreach (SDMXApi_2_0.Message.ContactType Contacts in Receiver.Contact) { Header.Receiver.Contact.Department = !string.IsNullOrEmpty(Convert.ToString(Contacts.Department[0].Value)) ? Convert.ToString(Contacts.Department[0].Value) : string.Empty; if (Contacts.Items.Length > 2) { Header.Receiver.Contact.Email = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[1])) ? Convert.ToString(Contacts.Items[1]) : string.Empty; Header.Receiver.Contact.Fax = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[2])) ? Convert.ToString(Contacts.Items[2]) : string.Empty; } else { Header.Receiver.Contact.Email = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[1])) ? Convert.ToString(Contacts.Items[1]) : string.Empty; } //Header.Receiver.Contact.Email = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[1])) ? Convert.ToString(Contacts.Items[1]) : string.Empty; //Header.Receiver.Contact.Fax = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[2])) ? Convert.ToString(Contacts.Items[2]) : string.Empty; Header.Receiver.Contact.Name = !string.IsNullOrEmpty(Convert.ToString(Contacts.Name[0].Value)) ? Convert.ToString(Contacts.Name[0].Value) : string.Empty; Header.Receiver.Contact.Role = !string.IsNullOrEmpty(Convert.ToString(Contacts.Role[0].Value)) ? Convert.ToString(Contacts.Role[0].Value) : string.Empty; Header.Receiver.Contact.Telephone = !string.IsNullOrEmpty(Convert.ToString(Contacts.Items[0])) ? Convert.ToString(Contacts.Items[0]) : string.Empty; //Header.Receiver.Contact.Department = !string.IsNullOrEmpty(Contacts.Department[0].Value.ToString()) ? Contacts.Department[0].Value.ToString() : string.Empty; //Header.Receiver.Contact.Email = !string.IsNullOrEmpty(Contacts.Items[2].ToString()) ? Contacts.Items[2].ToString() : string.Empty; //Header.Receiver.Contact.Fax = !string.IsNullOrEmpty(Contacts.Items[1].ToString()) ? Contacts.Items[1].ToString() : string.Empty; //Header.Receiver.Contact.Name = !string.IsNullOrEmpty(Contacts.Name[0].Value.ToString()) ? Contacts.Name[0].Value.ToString() : string.Empty; //Header.Receiver.Contact.Role = !string.IsNullOrEmpty(Contacts.Role[0].Value.ToString()) ? Contacts.Role[0].Value.ToString() : string.Empty; //Header.Receiver.Contact.Telephone = !string.IsNullOrEmpty(Contacts.Items[0].ToString()) ? Contacts.Items[0].ToString() : string.Empty; } } } } CurrentDate = DateTime.Now; ValidityPeriodStartDate = Subscription.ValidityPeriod.StartDate; ValidityPeriodEndDate = Subscription.ValidityPeriod.EndDate; if ((CurrentDate >= ValidityPeriodStartDate) && (CurrentDate <= ValidityPeriodEndDate)) { if (string.IsNullOrEmpty(HeaderFilePath) == false) { Artefacts = SDMXUtility.Get_Notification(SDMXSchemaType.Two_One, DateTime.Now, Registration.id, Subscription.RegistryURN, ActionType.Append, Registration, Header); } else { Artefacts = SDMXUtility.Get_Notification(SDMXSchemaType.Two_One, DateTime.Now, Registration.id, Subscription.RegistryURN, ActionType.Append, Registration, null); } foreach (NotificationURLType NotificationMailId in Subscription.NotificationMailTo) { if (NotificationMailId.isSOAP == true) { MessageContent = GetSoapWrappedXml(Artefacts[0].Content.OuterXml); } else { MessageContent = Artefacts[0].Content.OuterXml; } Send_Notification_By_Email(MessageContent, NotificationMailId.Value); } foreach (NotificationURLType NotificationHTTP in Subscription.NotificationHTTP) { if (NotificationHTTP.isSOAP == true) { MessageContent = GetSoapWrappedXml(Artefacts[0].Content.OuterXml); } else { MessageContent = Artefacts[0].Content.OuterXml; } Send_Notification_By_HTTP_Post(MessageContent, NotificationHTTP.Value); } } } catch (Exception ex) { Global.CreateExceptionString(ex, null); throw ex; } finally { } }
/// <summary> /// Generate_Data for Country DSD SDMX-ML v2.0 /// </summary> /// <param name="DictMapping">Key - DevInfo GId; Value - UNSD GID</param> /// <param name="OutputFolder">SDMX-ML folder path</param> /// <param name="DIConnection"></param> /// <param name="DIQueries"></param> /// <param name="fileCount">Return Count of SDMX-ML files generated for all language</param> /// <param name="AreaId"></param> /// <param name="DBOrDSDDBId">dbnid of devinfo database / country dsd</param> /// <param name="GeneratedFiles">list unique SDMX-ML file generated (single file name for multiple language)</param> /// <param name="HeaderfilePath"></param> /// <param name="xml">In case of optimize database - user selection through databuplish xml</param> /// <param name="DuplicateKey">Return knowldege of Duplicate key for indicator and time</param> /// <param name="dtSelections">In case of Register - user selection in form of datatable [ind, Area]</param> /// <param name="ErrorLogs">Return indicator@@Timeperiod}} </param> /// <param name="GeneratedIndicatorCountryGIDS">Return list of Country GUID for which files have been generated</param> /// <returns></returns> internal static bool Generate_Data(Dictionary<string, string> DictMapping, string OutputFolder, DIConnection DIConnection, DIQueries DIQueries, string AreaId, string DBOrDSDDBId, string HeaderfilePath, string xml, DataTable dtSelections, out int fileCount, out List<string> GeneratedFiles, out string ErrorLogs, out string DuplicateKey) { bool RetVal; string Language; string IndicatorGId, UnitGId, SGVGId, AreaID; string AreaNIds, TPNIds, SourceNIds; string SeriesValue, Unit, Age, Sex, Location, Frequency, SourceType, Nature, UnitMult, TimePeriod, ObsVal, TimeDetail, SourceDetail, Footnotes, IndicatorName; ErrorLogs = string.Empty; List<string> ProcessedIUSA; DataTable DtData; DataRow[] IUSARows; DataRow[] CheckDuplicateKeys; XmlDocument AttributesDoc; System.Xml.XmlAttribute Attribute; CompactDataType CompactData; SDMXApi_2_0.CompactData.SeriesType Series; SDMXApi_2_0.CompactData.ObsType Obs; Dictionary<string, string> DictAreaMapping; DateTime CurrentTime; RetVal = true; fileCount = 0; Language = string.Empty; IndicatorGId = string.Empty; UnitGId = string.Empty; SGVGId = string.Empty; AreaID = string.Empty; SeriesValue = string.Empty; Unit = string.Empty; Age = string.Empty; Sex = string.Empty; Location = string.Empty; Frequency = string.Empty; SourceType = string.Empty; Nature = string.Empty; UnitMult = string.Empty; TimePeriod = string.Empty; ObsVal = string.Empty; TimeDetail = string.Empty; SourceDetail = string.Empty; Footnotes = string.Empty; int RowCount = 0; ProcessedIUSA = new List<string>(); DtData = null; IUSARows = null; CheckDuplicateKeys = null; AttributesDoc = null; Attribute = null; CompactData = null; Series = null; Obs = null; DictAreaMapping = null; CurrentTime = DateTime.Now; IndicatorName = string.Empty; XmlDocument UploadedHeaderXml = new XmlDocument(); DataSet ds = new DataSet(); SDMXApi_2_0.Message.StructureType UploadedDSDStructure = new SDMXApi_2_0.Message.StructureType(); SDMXApi_2_0.Message.HeaderType Header = new SDMXApi_2_0.Message.HeaderType(); DuplicateKey = string.Empty; DataTable dtIndicator = new DataTable(); if (File.Exists(HeaderfilePath)) { UploadedHeaderXml.Load(HeaderfilePath); UploadedDSDStructure = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXml); Header = UploadedDSDStructure.Header; } GeneratedFiles = new List<string>(); if (dtSelections != null && dtSelections.Rows.Count > 0) { // register tab ds.Tables.Add(dtSelections); } else { // Admin if (File.Exists(xml)) { ds.ReadXml(xml); } } string IndicatorNId = string.Empty; // for each language in database foreach (DataRow LanguageRow in DIConnection.DILanguages(DIQueries.DataPrefix).Rows) { // Language = LanguageRow[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Language.LanguageCode].ToString(); int dsRowCount = ds.Tables["Data"].Rows.Count; RowCount = 0; // consider only those indiactors which are selected foreach (DataRow DSRow in ds.Tables["Data"].Select("selectedState=true")) { if (RowCount > dsRowCount) { break; } IndicatorNId = DSRow["Ind"].ToString(); AreaNIds = DSRow["areas"].ToString(); TPNIds = DSRow["timeperiods"].ToString(); SourceNIds = DSRow["source"].ToString(); // Get data based on Indiactor and associated fileters DtData = Get_Language_Specific_Data_Table(Language, IndicatorNId, AreaNIds, TPNIds, SourceNIds, DIConnection); dtIndicator = DIConnection.ExecuteDataTable(DIQueries.Indicators.GetIndicator(FilterFieldType.NId, IndicatorNId, FieldSelection.Heavy)); foreach (DataRow drIndicator in dtIndicator.Rows) { IndicatorName = drIndicator[Indicator.IndicatorName].ToString(); } ProcessedIUSA = new List<string>(); DictAreaMapping = RegTwoZeroFunctionality.Get_Area_Mapping_Dict(Convert.ToInt32(DBOrDSDDBId)); if ((DtData != null) && (DtData.Rows.Count > 0)) { fileCount += 1; CompactData = new CompactDataType(); if (!File.Exists(HeaderfilePath)) { CompactData.Header = RegTwoZeroFunctionality.Get_Appropriate_Header(); } else { CompactData.Header = Header; } CompactData.DataSet = new SDMXApi_2_0.CompactData.DataSetType(); CompactData.DataSet.ListSeries = new List<SDMXApi_2_0.CompactData.SeriesType>(); // for each data value for indicator foreach (DataRow DrData in DtData.Rows) { IndicatorGId = DrData[Indicator.IndicatorGId].ToString(); UnitGId = DrData[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Unit.UnitGId].ToString(); SGVGId = DrData[SubgroupVals.SubgroupValGId].ToString(); if (DictAreaMapping.ContainsKey(DrData[Area.AreaID].ToString())) { AreaId = DictAreaMapping[DrData[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaID].ToString()]; } else { AreaId = DrData[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaID].ToString(); } // AreaID = DrData[Area.AreaID].ToString(); AreaID = AreaId; if (string.IsNullOrEmpty(AreaID) == true) { AreaID = Global.registryMSDAreaId; } if (!DictMapping.ContainsKey(IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId)) { continue; } // Replace DI GUIDs with Coutry data GIDs based on mapping SeriesValue = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[0]; Unit = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[1]; Age = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[2]; Sex = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[3]; Location = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[4]; Frequency = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[5]; SourceType = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[6]; Nature = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[7]; UnitMult = DictMapping[IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId].Split(new string[] { "@__@" }, StringSplitOptions.None)[8]; // If series item already exists if (ProcessedIUSA.Contains(IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId + "@__@" + AreaID)) { continue; } else { ProcessedIUSA.Add(IndicatorGId + "@__@" + UnitGId + "@__@" + SGVGId + "@__@" + AreaID); Series = new SDMXApi_2_0.CompactData.SeriesType(); Series.AnyAttr = new List<XmlAttribute>(); AttributesDoc = new XmlDocument(); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Indicator.Id); Attribute.Value = SeriesValue; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Unit.Id); Attribute.Value = Unit; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Age.Id); Attribute.Value = Age; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Sex.Id); Attribute.Value = Sex; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Location.Id); Attribute.Value = Location; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Frequency.Id); Attribute.Value = Frequency; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.SourceType.Id); Attribute.Value = SourceType; Series.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Area.Id); Attribute.Value = AreaID; Series.AnyAttr.Add(Attribute); IUSARows = DtData.Select(Indicator.IndicatorGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + IndicatorGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Unit.UnitGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + UnitGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + SubgroupVals.SubgroupValGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + SGVGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + Area.AreaID + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + DrData[Area.AreaID].ToString() + SDMXLibrary.Constants.Apostophe); Series.ListObs = new List<SDMXApi_2_0.CompactData.ObsType>(); foreach (DataRow IUSARow in IUSARows) { TimePeriod = Get_Time_Period_Start_Year(Convert.ToString(IUSARow[Timeperiods.TimePeriod])); CheckDuplicateKeys = DtData.Select(Indicator.IndicatorGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + IndicatorGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Unit.UnitGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + UnitGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + SubgroupVals.SubgroupValGId + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + SGVGId + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + Area.AreaID + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + DrData[Area.AreaID].ToString() + SDMXLibrary.Constants.Apostophe + SDMXLibrary.Constants.AND + Timeperiods.TimePeriod + SDMXLibrary.Constants.EqualsTo + SDMXLibrary.Constants.Apostophe + TimePeriod + SDMXLibrary.Constants.Apostophe); ObsVal = IUSARow[Data.DataValue].ToString(); TimeDetail = IUSARow[Timeperiods.TimePeriod].ToString(); SourceDetail = IUSARow[IndicatorClassifications.ICName].ToString(); Footnotes = IUSARow[FootNotes.FootNote].ToString(); Obs = new SDMXApi_2_0.CompactData.ObsType(); Obs.AnyAttr = new List<XmlAttribute>(); AttributesDoc = new XmlDocument(); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Nature.Id); Attribute.Value = Nature; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.UnitMult.Id); Attribute.Value = UnitMult; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.TimePeriod.Id); Attribute.Value = TimePeriod; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.ObsVal.Id); Attribute.Value = ObsVal; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.TimeDetail.Id); Attribute.Value = TimeDetail; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.SourceDetail.Id); Attribute.Value = SourceDetail; Obs.AnyAttr.Add(Attribute); Attribute = AttributesDoc.CreateAttribute(Constants.UNSD.Concept.Footnotes.Id); Attribute.Value = Footnotes; Obs.AnyAttr.Add(Attribute); Series.ListObs.Add(Obs); } CompactData.DataSet.ListSeries.Add(Series); } } if (CheckDuplicateKeys.Count() <= 1) { SDMXApi_2_0.Serializer.SerializeToFile(typeof(CompactDataType), CompactData, Path.Combine(Path.Combine(OutputFolder, Language), Convert.ToString(SeriesValue + "_DI_" + IndicatorGId) + DevInfo.Lib.DI_LibSDMX.Constants.XmlExtension)); GeneratedFiles.Add(Convert.ToString(SeriesValue + "_DI_" + IndicatorGId)); } else { fileCount -= 1; if (string.IsNullOrEmpty(DuplicateKey)) { DuplicateKey += "DK" + Constants.Delimiters.ParamDelimiter + "INDICATOR: " + IndicatorName + "__@@@@__" + "TIMEPERIOD: " + TimePeriod + Constants.Delimiters.ParamDelimiter; } else { DuplicateKey += "DK" + Constants.Delimiters.ParamDelimiter + "INDICATOR: " + IndicatorName + "__@@@@__" + "TIMEPERIOD: " + TimePeriod + Constants.Delimiters.ParamDelimiter; } XLSLogGenerator.WriteCSVLogForMailStatus("Error found while publishing data", IndicatorName, "File not published for the given IndicatorGId and Timeperiod", DuplicateKey); } } else { // to find indicator gid DtData = Get_Language_Specific_Data_Table(Language, IndicatorNId, string.Empty, string.Empty, string.Empty, DIConnection); if (string.IsNullOrEmpty(IndicatorName)) { ErrorLogs += "NDF" + Constants.Delimiters.ParamDelimiter + IndicatorName + Constants.Delimiters.ParamDelimiter; XLSLogGenerator.WriteCSVLogForMailStatus("No data found", IndicatorName, "File not published", IndicatorName); } else { if (ErrorLogs.Contains(IndicatorName)) { continue; } else { if (string.IsNullOrEmpty(ErrorLogs)) { ErrorLogs += "NDF" + Constants.Delimiters.ParamDelimiter + IndicatorName + Constants.Delimiters.ParamDelimiter; } else { ErrorLogs += "NDF" + Constants.Delimiters.ParamDelimiter + IndicatorName + Constants.Delimiters.ParamDelimiter; } XLSLogGenerator.WriteCSVLogForMailStatus("No data found for ", IndicatorName, "File not published for the given IndicatorGId", IndicatorName); } } } RowCount += 1; } } RetVal = true; return RetVal; }
internal static bool Generate_MetadataReport(string SummaryFileName, string CodelistMappingFileName, string MetadataMappingFileName, string IndicatorNIds, string TargetAreaId, DIConnection DIConnection, DIQueries DIQueries, string OutputFolder, out string ErrorMessage, out List<string> GeneratedMetadataFiles, string HeaderfilePath, string xmlMetaFilePath) { bool RetVal; SDMXApi_2_0.Message.StructureType Summary; SDMXApi_2_0.Message.GenericMetadataType GenericMetadata; string MetadataSetName, MetadataStructureRef, MetadataStructureAgencyRef, ReportRef, TargetRef; string IndicatorNId, IndicatorGId,AreaId; Dictionary<string, string> DictIndicatorMapping, DictMetadataMapping,DictAreaMapping; DataTable DtIndicator,DtArea; ReportedAttributeType ReportedAttribute; DateTime CurrentTime; ErrorMessage = string.Empty; RetVal = false; CurrentTime = DateTime.Now; GeneratedMetadataFiles = new List<string>(); XmlDocument UploadedHeaderXml = new XmlDocument(); string AppSettingFile = string.Empty; XmlDocument XmlDoc; SDMXApi_2_0.Message.StructureType UploadedDSDStructure = new SDMXApi_2_0.Message.StructureType(); SDMXApi_2_0.Message.HeaderType Header = new SDMXApi_2_0.Message.HeaderType(); DataSet ds = new DataSet(); Callback objCallBack = new Callback(); AppSettingFile = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, ConfigurationManager.AppSettings[Constants.WebConfigKey.AppSettingFile]); if (File.Exists(HeaderfilePath)) { UploadedHeaderXml.Load(HeaderfilePath); UploadedDSDStructure = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromXmlDocument(typeof(SDMXApi_2_0.Message.StructureType), UploadedHeaderXml); Header = UploadedDSDStructure.Header; } if (File.Exists(xmlMetaFilePath)) { ds.ReadXml(xmlMetaFilePath); } try { Summary = (SDMXApi_2_0.Message.StructureType)SDMXApi_2_0.Deserializer.LoadFromFile(typeof(SDMXApi_2_0.Message.StructureType), SummaryFileName); MetadataSetName = "CountryData Metadata"; if (Summary.MetadataStructureDefinitions.Count > 0) { MetadataStructureRef = Summary.MetadataStructureDefinitions[0].id; MetadataStructureAgencyRef = Summary.MetadataStructureDefinitions[0].agencyID; ReportRef = Summary.MetadataStructureDefinitions[0].ReportStructure[0].id; TargetRef = Summary.MetadataStructureDefinitions[0].ReportStructure[0].target; DtIndicator = DIConnection.ExecuteDataTable(DIQueries.Indicators.GetIndicator(FilterFieldType.NId, IndicatorNIds, FieldSelection.Light)); DtIndicator = DtIndicator.DefaultView.ToTable(true, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator.IndicatorNId, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator.IndicatorGId); DtArea = DIConnection.ExecuteDataTable(DIQueries.Area.GetAreaByAreaLevel(Global.registryAreaLevel)); DtArea = DtArea.DefaultView.ToTable(true, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaID, DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaGId); DictIndicatorMapping = RegTwoZeroFunctionality.Get_Indicator_Mapping_Dict(CodelistMappingFileName, string.Empty); DictAreaMapping = RegTwoZeroFunctionality.Get_Area_Mapping_Dict(CodelistMappingFileName); foreach (DataRow DrArea in DtArea.Rows) { AreaId = DrArea[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaID].ToString(); if (DictAreaMapping.ContainsKey(AreaId)) { if (DictAreaMapping.Count == 1) { TargetAreaId = DictAreaMapping[AreaId].ToString();//DrArea[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Area.AreaID].ToString(); } } } if (TargetAreaId != Global.registryMSDAreaId) { XmlDoc = new XmlDocument(); XmlDoc.Load(AppSettingFile); objCallBack.SaveAppSettingValue(XmlDoc, Constants.AppSettingKeys.registryMSDAreaId, TargetAreaId); XmlDoc.Save(AppSettingFile); } if (File.Exists(MetadataMappingFileName)) { DictMetadataMapping = Get_Metadata_Mapping_Dict(MetadataMappingFileName); foreach (DataRow DrIndicator in DtIndicator.Rows) { IndicatorNId = DrIndicator[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator.IndicatorNId].ToString(); IndicatorGId = DrIndicator[DevInfo.Lib.DI_LibDAL.Queries.DIColumns.Indicator.IndicatorGId].ToString(); if (DictIndicatorMapping.ContainsKey(IndicatorGId)) { if (File.Exists(xmlMetaFilePath)) { foreach (DataRow DSRow in ds.Tables["Data"].Select("Ind=" + IndicatorNId)) { IndicatorNId = DSRow["Ind"].ToString(); } } GenericMetadata = new SDMXApi_2_0.Message.GenericMetadataType(); // GenericMetadata.Header = RegTwoZeroFunctionality.Get_Appropriate_Header(); if (!File.Exists(HeaderfilePath)) { GenericMetadata.Header = RegTwoZeroFunctionality.Get_Appropriate_Header(); } else { GenericMetadata.Header = Header; } GenericMetadata.MetadataSet = new SDMXApi_2_0.GenericMetadata.MetadataSetType(); GenericMetadata.MetadataSet.Annotations = null; GenericMetadata.MetadataSet.Name = new List<SDMXApi_2_0.Common.TextType>(); GenericMetadata.MetadataSet.Name.Add(new SDMXApi_2_0.Common.TextType()); GenericMetadata.MetadataSet.Name[0].Value = MetadataSetName; GenericMetadata.MetadataSet.MetadataStructureRef = MetadataStructureRef; GenericMetadata.MetadataSet.MetadataStructureAgencyRef = MetadataStructureAgencyRef; GenericMetadata.MetadataSet.ReportRef = ReportRef; GenericMetadata.MetadataSet.AttributeValueSet = new List<SDMXApi_2_0.GenericMetadata.AttributeValueSetType>(); GenericMetadata.MetadataSet.AttributeValueSet.Add(new SDMXApi_2_0.GenericMetadata.AttributeValueSetType()); GenericMetadata.MetadataSet.AttributeValueSet[0].TargetRef = TargetRef; GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues = new List<SDMXApi_2_0.GenericMetadata.ComponentValueType>(); GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues.Add(new SDMXApi_2_0.GenericMetadata.ComponentValueType()); GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[0].@object = SDMXApi_2_0.GenericMetadata.ObjectIDType.Dimension; GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[0].component = "SERIES"; GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[0].Value = DictIndicatorMapping[IndicatorGId].ToString(); GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues.Add(new SDMXApi_2_0.GenericMetadata.ComponentValueType()); GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[1].@object = SDMXApi_2_0.GenericMetadata.ObjectIDType.Dimension; GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[1].component = "REF_AREA"; GenericMetadata.MetadataSet.AttributeValueSet[0].TargetValues[1].Value = TargetAreaId; if (Summary.MetadataStructureDefinitions[0].ReportStructure[0].MetadataAttribute != null && Summary.MetadataStructureDefinitions[0].ReportStructure[0].MetadataAttribute.Count > 0) { GenericMetadata.MetadataSet.AttributeValueSet[0].ReportedAttribute = new List<ReportedAttributeType>(); foreach (MetadataAttributeType MetadataAttribute in Summary.MetadataStructureDefinitions[0].ReportStructure[0].MetadataAttribute) { ReportedAttribute = new ReportedAttributeType(); ReportedAttribute.Annotations = null; ReportedAttribute.conceptID = MetadataAttribute.conceptRef; Fill_Reported_Attribute_Value(ReportedAttribute, IndicatorNId, DictMetadataMapping, DIConnection, DIQueries); Fill_Reported_Attribute_ChildAttributes(ReportedAttribute, MetadataAttribute, IndicatorNId, DictMetadataMapping, DIConnection, DIQueries); GenericMetadata.MetadataSet.AttributeValueSet[0].ReportedAttribute.Add(ReportedAttribute); } } //SDMXApi_2_0.Serializer.SerializeToFile(typeof(SDMXApi_2_0.Message.GenericMetadataType), GenericMetadata, Path.Combine(OutputFolder, DictIndicatorMapping[IndicatorGId].ToString() + "_" + CurrentTime.ToString("yyyy-MM-dd HHmmss") + DevInfo.Lib.DI_LibSDMX.Constants.XmlExtension)); //GeneratedMetadataFiles.Add(Convert.ToString(DictIndicatorMapping[IndicatorGId].ToString() + "_" + CurrentTime.ToString("yyyy-MM-dd HHmmss"))); SDMXApi_2_0.Serializer.SerializeToFile(typeof(SDMXApi_2_0.Message.GenericMetadataType), GenericMetadata, Path.Combine(OutputFolder, DictIndicatorMapping[IndicatorGId].ToString() + "_DIMD_" + IndicatorGId + DevInfo.Lib.DI_LibSDMX.Constants.XmlExtension)); GeneratedMetadataFiles.Add(Convert.ToString(DictIndicatorMapping[IndicatorGId].ToString() + "_DIMD_" + IndicatorGId)); RetVal = true; } } } else { RetVal = false; ErrorMessage = "MNF"; return RetVal; } } else { RetVal = false; ErrorMessage = "ANF"; return RetVal; } } catch (Exception ex) { Global.CreateExceptionString(ex, null); throw ex; } finally { } return RetVal; }
internal static SDMXApi_2_0.Message.HeaderType Get_Appropriate_Header() { SDMXApi_2_0.Message.HeaderType RetVal; SDMXApi_2_0.Common.TextType ObjectValue; SDMXApi_2_0.Message.PartyType SenderParty; SDMXApi_2_0.Message.PartyType ReceiverParty; SDMXApi_2_0.Message.ContactType SenderContact; SDMXApi_2_0.Message.ContactType ReceiverContact; RetVal = new SDMXApi_2_0.Message.HeaderType(); RetVal.ID = DevInfo.Lib.DI_LibSDMX.Constants.Header.Id; RetVal.Name = new List<SDMXApi_2_0.Common.TextType>(); RetVal.Test = true; ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = "test"; RetVal.Name.Add(ObjectValue); RetVal.Prepared = DateTime.Now.ToString(SDMXLibrary.Constants.DateFormat) + SDMXObjectModel.Constants.DateTimeSeparator + DateTime.Now.ToString(SDMXLibrary.Constants.TimeFormat); // Sender RetVal.Sender = new List<SDMXApi_2_0.Message.PartyType>(); SenderParty = new SDMXApi_2_0.Message.PartyType(); SenderParty.id = DevInfo.Lib.DI_LibSDMX.Constants.Header.SenderId; SenderParty.Name = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.SenderName; SenderParty.Name.Add(ObjectValue); // Sender Contact SenderParty.Contact = new List<SDMXApi_2_0.Message.ContactType>(); SenderContact = new SDMXApi_2_0.Message.ContactType(); SenderContact.Name = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.SenderName; SenderContact.Name.Add(ObjectValue); SenderContact.Department = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.SenderDepartment; SenderContact.Department.Add(ObjectValue); SenderParty.Contact.Add(SenderContact); RetVal.Sender.Add(SenderParty); //Receiver RetVal.Receiver = new List<SDMXApi_2_0.Message.PartyType>(); ReceiverParty = new SDMXApi_2_0.Message.PartyType(); ReceiverParty.id = DevInfo.Lib.DI_LibSDMX.Constants.Header.ReceiverId; ReceiverParty.Name = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.ReceiverName; ReceiverParty.Name.Add(ObjectValue); // Sender Contact ReceiverParty.Contact = new List<SDMXApi_2_0.Message.ContactType>(); ReceiverContact = new SDMXApi_2_0.Message.ContactType(); ReceiverContact.Name = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.ReceiverName; ReceiverContact.Name.Add(ObjectValue); ReceiverContact.Department = new List<SDMXApi_2_0.Common.TextType>(); ObjectValue = new SDMXApi_2_0.Common.TextType(); ObjectValue.lang = "en"; ObjectValue.Value = DevInfo.Lib.DI_LibSDMX.Constants.Header.ReceiverDepartment; ReceiverContact.Department.Add(ObjectValue); ReceiverParty.Contact.Add(ReceiverContact); RetVal.Receiver.Add(ReceiverParty); return RetVal; }
/// <summary> /// Sets header details to sdmx structure header object and return object /// </summary> /// <param name="ObjHeaderDet">Class containg fields for header detail</param> /// <returns>Structure header object with fields initlized</returns> private SDMXApi_2_0.Message.HeaderType GetSdmxMessageHeaderStructure(HeaderDetailsTemplate ObjHeaderDet) { SDMXApi_2_0.Message.HeaderType ObjHeader = null; SDMXApi_2_0.Message.PartyType SenderParty; SDMXApi_2_0.Message.PartyType RecieverParty; SDMXApi_2_0.Message.ContactType SenderContact; SDMXApi_2_0.Message.ContactType ReceiverContact; string LanguageCode = string.Empty; try { SenderParty = new SDMXApi_2_0.Message.PartyType(); RecieverParty = new SDMXApi_2_0.Message.PartyType(); SenderParty.Contact = new List<SDMXApi_2_0.Message.ContactType>(); RecieverParty.Contact = new List<SDMXApi_2_0.Message.ContactType>(); LanguageCode = ObjHeaderDet.LanguageCode; #region "--Set sender fields value--" // Set sender Id SenderParty.id = ObjHeaderDet.SenderId; // Set sender name SenderParty.Name = SetHeaderFilds(LanguageCode, ObjHeaderDet.SenderName); // Set sender contact Name SenderContact = new SDMXApi_2_0.Message.ContactType(); SenderContact.Name = SetHeaderFilds(LanguageCode, ObjHeaderDet.SenderContactName); // Set reciever contact role SenderContact.Role = SetHeaderFilds(LanguageCode, ObjHeaderDet.SenderRole); // Set sender contact department SenderContact.Department = SetHeaderFilds(LanguageCode, ObjHeaderDet.SenderDepartment); // Set value of sender item fileds, telephone,emailid and fax SenderContact.Items = new string[] { ObjHeaderDet.SenderTelephone, ObjHeaderDet.SenderEmail, ObjHeaderDet.SenderFax }; SenderContact.ItemsElementName = new SDMXApi_2_0.Message.ContactChoiceType[] { SDMXApi_2_0.Message.ContactChoiceType.Telephone, SDMXApi_2_0.Message.ContactChoiceType.Email, SDMXApi_2_0.Message.ContactChoiceType.Fax }; SenderParty.Contact.Add(SenderContact); #endregion #region "--set Reciever fields value--" // Set Reciever Id RecieverParty.id = ObjHeaderDet.RecieverId; // Set reciever name RecieverParty.Name = SetHeaderFilds(LanguageCode, ObjHeaderDet.RecieverName); ReceiverContact = new SDMXApi_2_0.Message.ContactType(); // Set reciever contact name ReceiverContact.Name = SetHeaderFilds(LanguageCode, ObjHeaderDet.RecieverContactName); // Set reciever contact role ReceiverContact.Role = SetHeaderFilds(LanguageCode, ObjHeaderDet.RecieverRole); // Set reciever contact department ReceiverContact.Department = SetHeaderFilds(LanguageCode, ObjHeaderDet.RecieverDepartment); // Set value of sender item fileds, telephone,emailid and fax ReceiverContact.Items = new string[] { ObjHeaderDet.RecieverTelephone, ObjHeaderDet.RecieverEmail, ObjHeaderDet.RecieverFax }; ReceiverContact.ItemsElementName = new SDMXApi_2_0.Message.ContactChoiceType[] { SDMXApi_2_0.Message.ContactChoiceType.Telephone, SDMXApi_2_0.Message.ContactChoiceType.Email, SDMXApi_2_0.Message.ContactChoiceType.Fax }; RecieverParty.Contact.Add(ReceiverContact); #endregion //Init line header object ObjHeader = new SDMXApi_2_0.Message.HeaderType(); // Add SenderParty object to headers sender property ObjHeader.Sender.Add(SenderParty); // Add RecieverParty object to headers reciever property ObjHeader.Receiver.Add(RecieverParty); // Set id of header ObjHeader.ID = ObjHeaderDet.HeaderId; ObjHeader.Name = SetHeaderFilds(LanguageCode, ObjHeaderDet.HeaderDsdName); ObjHeader.Prepared = ObjHeaderDet.Prepared; } catch (Exception Ex) { throw Ex; } return ObjHeader; }