Esempio n. 1
0
        public void InitialiseGovTalkMessage(ILoggingService loggingService)
        {
            _govTalkMessage = new GovTalkMessage();
            _loggingService = loggingService;

            loggingService.LogInfo(this, "Initialised GovTalkMessage.");
        }
Esempio n. 2
0
        static void TestReadListResponse()
        {
            IConfigurationRepository configurationRepository = new ConfigFileConfigurationRepository();

            loggingService = new Log4NetLoggingService(configurationRepository, new ThreadContextService());

            LogProviderContext.Current = loggingService;

            string filename = @"C:\Temp\LocalDataRequestMessage_2014_10_16_10_33_50.xml";

            XmlDocument listResponse = new XmlDocument();

            listResponse.Load(filename);

            IMessageReader reader = new DefaultMessageReader(loggingService, configurationRepository, listResponse.ToXDocument());

            reader.ReadMessage();

            string[] results = reader.GetMessageResults <string[]>();

            string qualifier = reader.GetQualifier();
            string function  = reader.GetFunction();

            DataTable listResults = reader.GetMessageResults <DataTable>();

            GovTalkMessage message = reader.Message();

            Console.WriteLine("Message from {0}", message.Header.MessageDetails.ResponseEndPoint.Value.ToString());
        }
Esempio n. 3
0
        public static XmlDocument SerializeGovTalkMessage(GovTalkMessage govTalkMessage)
        {
            // Use XmlWriter to make use of settings
            // Load to XmlDoc for ease of use by client

            using (MemoryStream memStream = new MemoryStream())
            {
                XmlWriterSettings settings = new XmlWriterSettings
                {
                    Indent      = true,
                    IndentChars = "\t",
                    Encoding    = Encoding.UTF8
                };

                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                ns.Add(string.Empty, "http://www.govtalk.gov.uk/CM/envelope");

                XmlSerializer serializer = new XmlSerializer(typeof(GovTalkMessage));
                serializer.Serialize(XmlWriter.Create(memStream, settings), govTalkMessage, ns);

                memStream.Seek(0, SeekOrigin.Begin);

                XmlDocument doc = new XmlDocument();
                doc.PreserveWhitespace = true;
                doc.Load(memStream);

                XmlDeclaration xmlDeclaration;
                xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);

                doc.ReplaceChild(xmlDeclaration, doc.FirstChild);

                return(doc);
            }
        }
Esempio n. 4
0
        public static void TestDeserializeSuccessResponse(ILoggingService loggingService)
        {
            GovTalkMessageFileName FileNamer = new GovTalkMessageFileName.FileNameBuilder()
                                               .AddLogger(loggingService)
                                               .AddFilePath(@"C:\Temp\")
                                               .AddEnvironment("live")
                                               .AddMessageIntention("PollMessage")
                                               .AddTimestamp("2015_02_02_12_41")
                                               .AddCorrelationId("1853DE80F71CEF4C07B57CD5BDA969D577")
                                               .AddMessageQualifier("response")
                                               .AddCustomNamePart("20150202124118")
                                               .BuildFileName();

            string filename = FileNamer.ToString();

            XmlDocument successMessage = new XmlDocument();

            successMessage.Load(filename);

            GovTalkMessage success = XmlSerializationHelpers.DeserializeMessage(successMessage);

            XmlDocument successXml = new XmlDocument();

            successXml.LoadXml(success.Body.Any[0].OuterXml);

            SuccessResponse successResp = XmlSerializationHelpers.DeserializeSuccessResponse(successXml);

            loggingService.LogInfo(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, successResp.Message[0].Value);
        }
Esempio n. 5
0
        public GovTalkMessage CreatePollRequest(string correlationId, string polluri)
        {
            if (correlationId != "" && polluri.Trim() != "")
            {
                GovTalkMessageHeader header = new GovTalkMessageHeader();
                GovTalkMessageHeaderSenderDetails senderDeatils             = new GovTalkMessageHeaderSenderDetails();
                GovTalkMessageHeaderMessageDetailsResponseEndPoint endpoint = new GovTalkMessageHeaderMessageDetailsResponseEndPoint();
                endpoint.PollInterval = "10";
                endpoint.Value        = polluri;
                GovTalkMessageHeaderMessageDetails messageDetails = new GovTalkMessageHeaderMessageDetails();
                messageDetails.Class             = "HMRC-VAT-DEC-TIL";
                messageDetails.Qualifier         = GovTalkMessageHeaderMessageDetailsQualifier.poll;
                messageDetails.Function          = GovTalkMessageHeaderMessageDetailsFunction.submit;
                messageDetails.FunctionSpecified = true;
                messageDetails.CorrelationID     = correlationId;
                messageDetails.ResponseEndPoint  = endpoint;
                messageDetails.Transformation    = GovTalkMessageHeaderMessageDetailsTransformation.XML;
                header.MessageDetails            = messageDetails;
                header.SenderDetails             = senderDeatils;

                GovTalkMessageGovTalkDetails details = new GovTalkMessageGovTalkDetails();
                //GovTalkMessageGovTalkDetailsKey key = new GovTalkMessageGovTalkDetailsKey();
                GovTalkMessageGovTalkDetailsKey[] Keys = new GovTalkMessageGovTalkDetailsKey[1];
                //Keys[0] = key;
                details.Keys = Keys;
                GovTalkMessageBody body           = new GovTalkMessageBody();
                GovTalkMessage     govTalkMessage = new GovTalkMessage();
                govTalkMessage.EnvelopeVersion = ConfigurationManager.AppSettings["GovTalkMessageEnvelopeVersion"];
                govTalkMessage.Header          = header;
                govTalkMessage.GovTalkDetails  = details;
                govTalkMessage.Body            = body;
                return(govTalkMessage);
            }
            return(null);
        }
Esempio n. 6
0
        // read message into datatable of donations ?

        // what do we want to do when we read in a Submit Request - recreate the input datatables (donations & otherincome)
        // list of the reference values

        public void ReadMessage(XDocument inXD)
        {
            _message = XmlSerializationHelpers.DeserializeMessage(inXD.ToXmlDocument());

            _messageRead = true;

            _qualifier = _message.Header.MessageDetails.Qualifier.ToString();
            _function  = _message.Header.MessageDetails.Function.ToString();

            XmlElement xmlElement = _message.Body.Any[0];

            XmlDocument bodyDoc = new XmlDocument();

            bodyDoc.LoadXml(xmlElement.OuterXml);

            _body = XmlSerializationHelpers.DeserializeIRenvelope(bodyDoc);

            if (_body.R68.Items[0].GetType() == typeof(R68CompressedPart))
            {
                _hasCompressedPart = true;
            }
            else
            {
                _hasCompressedPart = false;
            }

            _loggingService.LogInfo(this, "Message read. Message is SubmitRequest.");
        }
Esempio n. 7
0
        public static XmlDocument TestDeserializeAndDecompress(XmlDocument xd)
        {
            GovTalkMessage gtm = XmlSerializationHelpers.DeserializeMessage(xd);

            XmlElement xelement = gtm.Body.Any[0];

            // XmlDocument bodyDoc = xelement.OwnerDocument;
            XmlDocument bodyDoc = new XmlDocument();

            bodyDoc.LoadXml(xelement.OuterXml);

            IRenvelope ire = XmlSerializationHelpers.DeserializeIRenvelope(bodyDoc);

            R68CompressedPart compressedPart = (R68CompressedPart)ire.R68.Items[0];

            string decompressedClaim    = CommonUtilityHelper.DecompressData(compressedPart.Value);
            string decompressedR68Claim = decompressedClaim.Replace("Claim", "R68Claim");

            XmlDocument r68claim = new XmlDocument();

            r68claim.LoadXml(decompressedR68Claim);
            r68claim.DocumentElement.SetAttribute("xmlns", "http://www.govtalk.gov.uk/taxation/charities/r68/2");

            R68Claim uncompressedR68 = XmlSerializationHelpers.Deserialize <R68Claim>(r68claim.OuterXml, "R68Claim");

            // XmlSerializationHelpers.DeserializeR68Claim(r68claim);

            ire.R68.Items[0] = uncompressedR68;

            gtm.Body.Any[0] = XmlSerializationHelpers.SerializeIREnvelope(ire);

            XmlDocument SerializedDecompressedGovTalkMessage = XmlSerializationHelpers.SerializeGovTalkMessage(gtm);

            return(SerializedDecompressedGovTalkMessage);
        }
Esempio n. 8
0
        public void ReadMessage(XDocument inMessage)
        {
            try
            {
                _message       = XmlSerializationHelpers.DeserializeMessage(inMessage.ToXmlDocument());
                _correlationId = _message.Header.MessageDetails.CorrelationID;
                _qualifier     = _message.Header.MessageDetails.Qualifier.ToString();
                _function      = _message.Header.MessageDetails.Function.ToString();
                if (_message.Header.MessageDetails.GatewayTimestampSpecified)
                {
                    _gatewayTimestamp = _message.Header.MessageDetails.GatewayTimestamp;
                }

                XmlDocument successXml = new XmlDocument();

                if (_message.Body.Any != null)
                {
                    successXml.LoadXml(_message.Body.Any[0].OuterXml);

                    _body = XmlSerializationHelpers.DeserializeSuccessResponse(successXml);
                }
                else
                {
                    MessageType messageType = new MessageType
                    {
                        Value = "No valid SuccessResponse contained in the Body element of this message. Contact Support."
                    };

                    SuccessResponse dummyResponse = new SuccessResponse
                    {
                        IRmarkReceipt = null,
                        Message       = new MessageType[] { messageType },
                        AcceptedTime  = (DateTime)_gatewayTimestamp
                    };

                    _body = dummyResponse;
                }

                _messageRead = true;

                _loggingService.LogInfo(this, "Message read. Response type is Response.");
            }
            catch (Exception ex)
            {
                _loggingService.LogError(this, "Message Reading Exception", ex);

                GovTalkMessageFileName FileNamer = new GovTalkMessageFileName(_loggingService, _configurationRepository);
                string filename = FileNamer.DefaultFileName();

                _loggingService.LogInfo(this, String.Concat("Attempting to save reply document to ", filename, "."));

                inMessage.Save(filename);

                throw ex;
            }
        }
Esempio n. 9
0
        public void ReadMessage(XDocument inMessage)
        {
            _message = XmlSerializationHelpers.DeserializeMessage(inMessage.ToXmlDocument());

            _messageRead = true;

            _correlationId = _message.Header.MessageDetails.CorrelationID;
            _qualifier     = _message.Header.MessageDetails.Qualifier.ToString();
            _function      = _message.Header.MessageDetails.Function.ToString();
        }
Esempio n. 10
0
        public void ReadMessage(XDocument inMessage)
        {
            _message       = XmlSerializationHelpers.DeserializeMessage(inMessage.ToXmlDocument());
            _messageRead   = true;
            _correlationId = _message.Header.MessageDetails.CorrelationID;
            _qualifier     = _message.Header.MessageDetails.Qualifier.ToString();
            _function      = _message.Header.MessageDetails.Function.ToString();

            _loggingService.LogInfo(this, "Message read. Response type is Response to Delete Request.");
        }
Esempio n. 11
0
        public static GovTalkMessage DeserializeMessage(XmlDocument XmlMessage)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(GovTalkMessage));
            MemoryStream  xmlStream  = new MemoryStream();

            XmlMessage.Save(xmlStream);
            xmlStream.Seek(0, SeekOrigin.Begin);

            var            LocalGovTalkMsg = serializer.Deserialize(xmlStream);
            GovTalkMessage reply           = (GovTalkMessage)LocalGovTalkMsg;

            return(reply);
        }
Esempio n. 12
0
        public void ReadMessage(XDocument inMessage)
        {
            try
            {
                _message = XmlSerializationHelpers.DeserializeMessage(inMessage.ToXmlDocument());

                _messageRead = true;

                _correlationId = _message.Header.MessageDetails.CorrelationID;
                _qualifier     = _message.Header.MessageDetails.Qualifier.ToString();
                _function      = _message.Header.MessageDetails.Function.ToString();

                if (_message.Body.Any != null)
                {
                    XmlDocument errorXml = new XmlDocument();
                    errorXml.LoadXml(_message.Body.Any[0].OuterXml);
                    _body      = XmlSerializationHelpers.DeserializeErrorResponse(errorXml);
                    _errorText = _body.Application.Any[0].Name + ":" + _body.Application.Any[0].InnerText;
                }

                if (_message.GovTalkDetails != null)
                {
                    if (_message.GovTalkDetails.GovTalkErrors != null)
                    {
                        _govTalkDetailsErrors = new List <GovTalkMessageGovTalkDetailsError>();

                        foreach (GovTalkMessageGovTalkDetailsError error in _message.GovTalkDetails.GovTalkErrors)
                        {
                            _govTalkDetailsErrors.Add(error);
                        }

                        _errorText = String.Format("There are {0} GovTalkDetailsErrors.", _govTalkDetailsErrors.Count);
                    }
                }

                _loggingService.LogInfo(this, string.Concat("Message read. Response type is Error."));
            }
            catch (Exception ex)
            {
                _loggingService.LogError(this, "Message Reading Exception", ex);

                GovTalkMessageFileName FileNamer = new GovTalkMessageFileName(_loggingService, _configurationRepository);
                string filename = FileNamer.DefaultFileName();

                _loggingService.LogInfo(this, String.Concat("Attempting to save reply document to ", filename, "."));

                inMessage.Save(filename);

                throw ex;
            }
        }
Esempio n. 13
0
        public GovTalkMessage CreateGovTalkMessageForDataRequest(string senderId, string senderValue, bool testInLive)
        {
            if (!String.IsNullOrEmpty(senderId) && !String.IsNullOrEmpty(senderValue))
            {
                //define classtype
                string classType   = !testInLive ? "HMRC-VAT-DEC" : "HMRC-VAT-DEC-TIL";
                string gatewayTest = !testInLive ? "0" : "1";

                GovTalkMessage govTalkMessage = new GovTalkMessage();
                govTalkMessage.EnvelopeVersion =
                    ConfigurationManager.AppSettings["GovTalkMessageEnvelopeVersion"];
                //header
                GovTalkMessageHeader header = new GovTalkMessageHeader();
                //header message details
                GovTalkMessageHeaderMessageDetails messageDetails = new GovTalkMessageHeaderMessageDetails();
                messageDetails.Class                   = classType;
                messageDetails.Qualifier               = GovTalkMessageHeaderMessageDetailsQualifier.request;
                messageDetails.Function                = GovTalkMessageHeaderMessageDetailsFunction.list;
                messageDetails.Transformation          = GovTalkMessageHeaderMessageDetailsTransformation.XML;
                messageDetails.FunctionSpecified       = true;
                messageDetails.TransformationSpecified = true;
                messageDetails.CorrelationID           = "";
                messageDetails.GatewayTest             = gatewayTest;
                //sender details
                GovTalkMessageHeaderSenderDetails senderDetails          = new GovTalkMessageHeaderSenderDetails();
                GovTalkMessageHeaderSenderDetailsIDAuthentication idauth = new GovTalkMessageHeaderSenderDetailsIDAuthentication();
                idauth.SenderID = senderId;
                GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication aauth = new GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication();
                aauth.Method = GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthenticationMethod.clear;
                aauth.Role   = "principal";
                aauth.Item   = senderValue;
                GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication[] authentications = new GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication[1];
                authentications[0]             = aauth;
                idauth.Authentication          = authentications;
                senderDetails.IDAuthentication = idauth;
                header.MessageDetails          = messageDetails;
                header.SenderDetails           = senderDetails;
                //govtalk details
                GovTalkMessageGovTalkDetails      govTalkDetails = new GovTalkMessageGovTalkDetails();
                GovTalkMessageGovTalkDetailsKey[] keys           = new GovTalkMessageGovTalkDetailsKey[1];
                govTalkDetails.Keys = keys;
                //govtalk body
                GovTalkMessageBody body = new GovTalkMessageBody();
                govTalkMessage.Body           = body;
                govTalkMessage.Header         = header;
                govTalkMessage.GovTalkDetails = govTalkDetails;
                return(govTalkMessage);
            }
            return(null);
        }
Esempio n. 14
0
 public static XDocument GovTalkMessageToXDocumentForData(GovTalkMessage govTalkMessage, bool testInLive)
 {
     if (govTalkMessage != null)
     {
         XNamespace ns  = "http://www.govtalk.gov.uk/CM/envelope";
         XDocument  doc = new XDocument(
             new XDeclaration("1.0", "UTF-16", null),
             new XElement(ns + "GovTalkMessage",
                          new XElement("EnvelopeVersion", govTalkMessage.EnvelopeVersion.ToString()),
                          new XElement("Header",
                                       new XElement("MessageDetails",
                                                    new XElement("Class",
                                                                 govTalkMessage.Header.MessageDetails.Class.ToString()),
                                                    new XElement("Qualifier", govTalkMessage.Header.MessageDetails.Qualifier.ToString()),
                                                    new XElement("Function", govTalkMessage.Header.MessageDetails.Function.ToString()),
                                                    new XElement("CorrelationID"),
                                                    new XElement("Transformation",
                                                                 govTalkMessage.Header.MessageDetails.Transformation.ToString())),
                                       //new XElement("GatewayTimestamp")
                                       //),
                                       new XElement("SenderDetails",
                                                    new XElement("IDAuthentication",
                                                                 new XElement("SenderID",
                                                                              govTalkMessage.Header.SenderDetails.IDAuthentication.SenderID.ToString()),
                                                                 new XElement("Authentication",
                                                                              new XElement("Method",
                                                                                           govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                               x => x.Method).FirstOrDefault().ToString()),
                                                                              new XElement("Role",
                                                                                           govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                               x => x.Role).FirstOrDefault().ToString()),
                                                                              new XElement("Value",
                                                                                           govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                               x => x.Item).FirstOrDefault().ToString())
                                                                              )))),
                          new XElement("GovTalkDetails",
                                       new XElement("Keys")
                                       ),
                          new XElement("Body")
                          ));
         foreach (var element in doc.Descendants()) //just add namespace using for each instead of hard coding
         {
             element.Name = ns + element.Name.LocalName;
         }
         return(doc);
     }
     return(null);
 }
Esempio n. 15
0
        public void ReadMessage(XDocument inMessage)
        {
            _message = XmlSerializationHelpers.DeserializeMessage(inMessage.ToXmlDocument());

            _messageRead = true;

            _qualifier = _message.Header.MessageDetails.Qualifier.ToString();
            _function  = _message.Header.MessageDetails.Function.ToString();

            XmlDocument listXml = new XmlDocument();

            listXml.LoadXml(_message.Body.Any[0].OuterXml);

            _statusReport = XmlSerializationHelpers.DeserializeStatusReport(listXml);

            _loggingService.LogInfo(this, "Message read. Response type is List Response.");
        }
Esempio n. 16
0
        public static XDocument GoVTalkMessageToXDocumentForPoll(GovTalkMessage govTalkMessage)
        {
            if (govTalkMessage != null)
            {
                XNamespace ns1 = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance");
                XNamespace ns2 = XNamespace.Get("http://www.w3.org/2001/XMLSchema");

                XNamespace ns  = "http://www.govtalk.gov.uk/CM/envelope";
                XDocument  doc = new XDocument(
                    new XDeclaration("1.0", "UTF-16", null),
                    new XElement(ns + "GovTalkMessage",
                                 // new XAttribute(XNamespace.Xmlns + "xsi",ns1),
                                 //new XAttribute(XNamespace.Xmlns + "xsd", ns2),
                                 //new XAttribute(XNamespace.Xmlns, ns),
                                 new XElement("EnvelopeVersion", govTalkMessage.EnvelopeVersion.ToString()),
                                 new XElement("Header",
                                              new XElement("MessageDetails",
                                                           new XElement("Class",
                                                                        govTalkMessage.Header.MessageDetails.Class.ToString()),
                                                           new XElement("Qualifier", govTalkMessage.Header.MessageDetails.Qualifier.ToString()),
                                                           new XElement("Function", govTalkMessage.Header.MessageDetails.Function.ToString()),
                                                           new XElement("CorrelationID",
                                                                        govTalkMessage.Header.MessageDetails.CorrelationID.ToString()),
                                                           new XElement("Transformation",
                                                                        govTalkMessage.Header.MessageDetails.Transformation.ToString())
                                                           ),
                                              new XElement("SenderDetails")
                                              ),
                                 new XElement("GovTalkDetails",
                                              new XElement("Keys")
                                              ),
                                 new XElement("Body")
                                 ));
                foreach (var element in doc.Descendants()) //just add namespace using for each instead of hard coding
                {
                    element.Name = ns + element.Name.LocalName;
                }
                return(doc);
            }
            return(null);
        }
Esempio n. 17
0
        public GovTalkMessage CreateGovTalkMessageForDeleteRequest(string correlationId, bool testInLive)
        {
            if (correlationId != "")
            {
                //define classtype
                string classType = !testInLive ? "HMRC-VAT-DEC" : "HMRC-VAT-DEC-TIL";

                GovTalkMessage govTalkMessage = new GovTalkMessage();
                govTalkMessage.EnvelopeVersion = ConfigurationManager.AppSettings["GovTalkMessageEnvelopeVersion"];
                //ConfigurationManager.AppSettings["GovTalkMessageEnvelopeVersion"].ToString();
                //header
                GovTalkMessageHeader header = new GovTalkMessageHeader();
                //header message details
                GovTalkMessageHeaderMessageDetails messageDetails = new GovTalkMessageHeaderMessageDetails();
                messageDetails.Class                   = classType;
                messageDetails.Qualifier               = GovTalkMessageHeaderMessageDetailsQualifier.request;
                messageDetails.Function                = GovTalkMessageHeaderMessageDetailsFunction.delete;
                messageDetails.CorrelationID           = correlationId;
                messageDetails.Transformation          = GovTalkMessageHeaderMessageDetailsTransformation.XML;
                messageDetails.FunctionSpecified       = true;
                messageDetails.TransformationSpecified = true;
                //sender details
                GovTalkMessageHeaderSenderDetails senderDeatils = new GovTalkMessageHeaderSenderDetails();
                header.SenderDetails  = senderDeatils;
                header.MessageDetails = messageDetails;
                //govtalk details
                GovTalkMessageGovTalkDetails      govTalkDetails = new GovTalkMessageGovTalkDetails();
                GovTalkMessageGovTalkDetailsKey[] keys           = new GovTalkMessageGovTalkDetailsKey[1];
                govTalkDetails.Keys = keys;
                //govtalk body
                GovTalkMessageBody body = new GovTalkMessageBody();
                govTalkMessage.Body           = body;
                govTalkMessage.Header         = header;
                govTalkMessage.GovTalkDetails = govTalkDetails;
                return(govTalkMessage);
            }
            return(null);
        }
Esempio n. 18
0
        /// <summary>
        /// Set a password within a GovTalkMessage object
        /// </summary>
        /// <param name="govTalkMessage"></param>
        /// <param name="userPassword"></param>
        /// <param name="passwordMethod"></param>
        public void SetPassword(GovTalkMessage govTalkMessage, string userPassword, string passwordMethod = "")
        {
            _loggingService.LogInfo(this, "Setting password.");

            if ((passwordMethod == "MD5" || _configurationRepository.GetConfigurationValue <string>("SenderAuthenticationMethod") == "MD5") && passwordMethod.ToLower() != "clear")
            {
                CommonUtilityHelper helper = new CommonUtilityHelper(_configurationRepository, _loggingService);

                govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication[0].Method = GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthenticationMethod.MD5;

                userPassword = helper.MD5Hash(userPassword);

                _loggingService.LogDebug(this, "MD5 Hashed password.");
            }
            if (passwordMethod.ToLower() == "clear")
            {
                govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication[0].Method = GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthenticationMethod.clear;
            }

            govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication[0].Item = userPassword;

            _loggingService.LogInfo(this, "Password set.");
        }
Esempio n. 19
0
        public static void TestGovTalkMessageCreation(string SourceDataFileName, string Filename = "")
        {
            IConfigurationRepository configurationRepository = new ConfigFileConfigurationRepository();
            ILoggingService          loggingService          = new Log4NetLoggingService(configurationRepository, new ThreadContextService());

            ReferenceDataManager.SetSource(ReferenceDataManager.SourceTypes.ConfigFile);
            ReferenceDataManager.governmentGatewayEnvironment = GovernmentGatewayEnvironment.localtestservice;

            DataTableRepaymentPopulater.SetLogger(loggingService);

            if (!string.IsNullOrEmpty(SourceDataFileName))
            {
                DataTableRepaymentPopulater.GiftAidDonations = DataHelpers.GetDataTableFromCsv(@SourceDataFileName, true);
            }

            GovTalkMessageCreator submitMessageCreator = new GovTalkMessageCreator(new SubmitRequestMessageBuilder(loggingService), loggingService);

            submitMessageCreator.CreateGovTalkMessage();

            GovTalkMessage submitMessage = submitMessageCreator.GetGovTalkMessage();

            GovTalkMessageHelper helper = new GovTalkMessageHelper(configurationRepository, loggingService);

            helper.SetPassword(submitMessage, "testing1");

            XmlDocument xd = submitMessageCreator.SerializeGovTalkMessage();

            xd.PreserveWhitespace = true;

            xd = helper.AddPassword(xd.ToXDocument(), "xdocpassword", "clear").ToXmlDocument();

            byte[] xmlDocumentSize = xd.XmlToBytes();

            Console.WriteLine("The document is {0} bytes big.", xmlDocumentSize.Length);

            XmlDocument outputXmlDocument = new XmlDocument();

            outputXmlDocument.PreserveWhitespace = true;

            //if (xmlDocumentSize.Length > 1000000)
            //{
            //    XmlDocument compressedVersion = submitMessageCreator.CompressClaim();
            //    outputXmlDocument = GovTalkMessageHelper.SetIRmark(compressedVersion);
            //}
            //else
            //{

            GovTalkMessageHelper gtmHelper = new GovTalkMessageHelper(configurationRepository, loggingService);

            outputXmlDocument = gtmHelper.SetIRmark(xd);
            //}

            string filename;

            if (Filename == "")
            {
                GovTalkMessageFileName FileNamer = new GovTalkMessageFileName.FileNameBuilder()
                                                   .AddLogger(loggingService)
                                                   .AddMessageIntention("GatewaySubmission")
                                                   .AddFilePath(@"C:\Temp\")
                                                   .AddTimestamp(DateTime.Now.ToString("yyyyMMddHHmmss"))
                                                   .AddEnvironment(ReferenceDataManager.governmentGatewayEnvironment.ToString())
                                                   .BuildFileName();

                filename = FileNamer.ToString();
            }
            else
            {
                filename = Filename;
            }

            outputXmlDocument.Save(filename);

            #region old
            //BodyCreator bodyCreator = new BodyCreator(new SubmitRequestBodyBuilder());
            //bodyCreator.CreateBody();
            //GovTalkMessageBody body = bodyCreator.GetBody();

            //BodyCreator pollBodyCreator = new BodyCreator(new SubmitPollBodyBuilder());
            //pollBodyCreator.CreateBody();
            //GovTalkMessageBody pollBody = pollBodyCreator.GetBody();
            #endregion old
        }
Esempio n. 20
0
        public static void DemonstrateLocalProcess()
        {
            // Set up the logging
            IConfigurationRepository configurationRepository = new ConfigFileConfigurationRepository();
            ILoggingService          loggingService          = new Log4NetLoggingService(configurationRepository, new ThreadContextService());

            DataTableRepaymentPopulater.SetLogger(loggingService);

            // Create a file of donations records
            DataTableRepaymentPopulater.GiftAidDonations = DataHelpers.GetDataTableFromCsv(@"C:\Temp\Donations.csv", true);

            // Set up app.config as a source for the reference data
            ReferenceDataManager.SetSource(ReferenceDataManager.SourceTypes.ConfigFile);

            // Build a GovTalkMessage
            GovTalkMessageCreator submitMessageCreator = new GovTalkMessageCreator(new SubmitRequestMessageBuilder(loggingService), loggingService);

            submitMessageCreator.CreateGovTalkMessage();

            // Get the GovTalkMessage that has been built
            GovTalkMessage submitMessage = submitMessageCreator.GetGovTalkMessage();

            // Serialize the GovTalkMessage to an XmlDocument
            XmlDocument xd = submitMessageCreator.SerializeGovTalkMessage();

            // Set the IRmark for the GovTalkMessage XmlDocument
            GovTalkMessageHelper gtmHelper = new GovTalkMessageHelper(configurationRepository, loggingService);
            XmlDocument          finalXd   = gtmHelper.SetIRmark(xd);

            // Set the URI to send the file to
            string uri = configurationRepository.GetConfigurationValue <string>("SendURILocal");

            // Create a client to send the file to the target gateway
            CharitiesOnline.MessageService.Client client = new MessageService.Client(loggingService);

            // Create an XmlDocument of the reply from the endpoint
            XmlDocument reply = client.SendRequest(xd, uri);

            // Set up a message reading strategy
            IMessageReader _messageReader = new DefaultMessageReader(loggingService, configurationRepository, reply.ToXDocument());

            _messageReader.ReadMessage();

            string[] results = _messageReader.GetMessageResults <string[]>();

            //int correlationIdIndex = Array.IndexOf(results, "CorrelationId");
            int correlationIdPosition = Array.FindIndex(results, element => element.StartsWith("CorrelationId"));

            if (correlationIdPosition < 0)
            {
                throw new ArgumentNullException("CorrelationId");
            }

            int qualifierPosition = Array.FindIndex(results, element => element.StartsWith("Qualifier"));

            if (qualifierPosition < 0)
            {
                throw new ArgumentNullException("Qualifier");
            }

            Console.WriteLine(string.Join("\n", results));

            #region old
            // This bit, bunch of if-thens, should be covered by the reader strategy ...
            //string bodytype = _messageReader.GetBodyType(reply.ToXDocument());

            //if(bodytype == null)
            //{
            //    //acknowledgment
            //    Console.WriteLine("CorrelationId is {0}",_messageReader.ReadMessage<string>(reply.ToXDocument()));
            //}
            //else if(bodytype == "hmrcclasses.SuccessResponse")
            //{
            //    //success
            //    string[] success = _messageReader.ReadMessage<string[]>(reply.ToXDocument());
            //    Console.WriteLine(string.Join("\n", success));
            //}
            //else if(bodytype == "hmrcclasses.ErrorResponse")
            //{
            //    //error
            //    string[] error = _messageReader.ReadMessage<string[]>(reply.ToXDocument());
            //    Console.WriteLine(string.Join("\n", error));
            //}

            #endregion old

            // Need to get correlationId

            GovTalkMessageFileName fileNamer = new GovTalkMessageFileName.FileNameBuilder()
                                               .AddLogger(loggingService)
                                               .AddFilePath(configurationRepository.GetConfigurationValue <string>("TempFolder"))
                                               .AddEnvironment("local")
                                               .AddMessageIntention("reply")
                                               .AddCorrelationId(results[correlationIdPosition].Substring(results[correlationIdPosition].IndexOf("::") + 2))
                                               .AddMessageQualifier(results[qualifierPosition].Substring(results[qualifierPosition].IndexOf("::") + 2)) //could check for < 0 here and pass empty string
                                               .BuildFileName();

            string filename = fileNamer.ToString();

            reply.Save(filename);

            // reply.Save(@"C:\Temp\localreply.xml");
        }
Esempio n. 21
0
        /// <summary>
        /// Shows how to create a Submit Request GovTalkMessage, the basic type for submitting a GiftAid claim.
        /// If the message is very large it can be compressed, or compression can be chosen at the start of the process.
        /// Password and IRmark are added after the message is created.
        /// </summary>
        /// <param name="loggingService"></param>
        static string DemonstrateCreateSubmitRequest(ILoggingService loggingService, IConfigurationRepository configurationRepository, string giftAidDataSourceCsvFile)
        {
            // Assign a reference data source
            ReferenceDataManager.SetSource(ReferenceDataManager.SourceTypes.ConfigFile);

            // Set logger for the repaymentPopulater
            DataTableRepaymentPopulater.SetLogger(loggingService);

            // Assign a source for the GiftAid repayments data
            // If a filepath has been passed in, the DataHelpers method will make a datatable from a CSV source
            // with a valid set of columns. Otherwise, grab a datatable from a database or some other source
            // If the repaymentpopulater is not given a datatable, the submission message will have no repayments in it
            if (!string.IsNullOrEmpty(giftAidDataSourceCsvFile))
            {
                DataTableRepaymentPopulater.GiftAidDonations = DataHelpers.GetDataTableFromCsv(giftAidDataSourceCsvFile, true);
            }

            GovTalkMessageCreator submitMessageCreator = new GovTalkMessageCreator(new SubmitRequestMessageBuilder(loggingService), loggingService);

            submitMessageCreator.CreateGovTalkMessage();

            GovTalkMessage submitMessage = submitMessageCreator.GetGovTalkMessage();

            // Set a password if not using the password hard-coded in the configuration source
            GovTalkMessageHelper helper = new GovTalkMessageHelper(configurationRepository, loggingService);

            helper.SetPassword(submitMessage, "weirdpassword");

            XmlDocument submitMessageXml = submitMessageCreator.SerializeGovTalkMessage();

            GovTalkMessageHelper gtmHelper = new GovTalkMessageHelper(configurationRepository, loggingService);

            XmlDocument irMarkedMessageXml = gtmHelper.SetIRmark(submitMessageXml);

            // If the message is too big, compress it

            // byte[] xmlDocumentSize = xd.XmlToBytes();

            // if (xmlDocumentSize.Length > 1000000)
            // {
            //    XmlDocument compressedVersion = submitMessageCreator.CompressClaim();
            //    outputXmlDocument = GovTalkMessageHelper.SetIRmark(compressedVersion);
            // }

            // Optionally, create a filename using this helper class

            string outputFilename;
            string tempDirectory = configurationRepository.GetConfigurationValue <string>("TempFolder");

            GovTalkMessageFileName FileNamer = new GovTalkMessageFileName.FileNameBuilder()
                                               .AddLogger(loggingService)
                                               .AddMessageIntention("GatewaySubmission")
                                               .AddFilePath(tempDirectory)
                                               .AddTimestamp(DateTime.Now.ToString("yyyyMMddHHmmss"))
                                               .AddEnvironment("local")
                                               .AddCustomNamePart("EmptyRepayment")
                                               .BuildFileName();

            outputFilename = FileNamer.ToString();

            irMarkedMessageXml.Save(outputFilename);

            return(outputFilename);
        }
Esempio n. 22
0
        static void Main(string[] args)
        {
            using (var ctx = new ASAEntitiesContext())
            {
                //Sender sen = new Sender()
                //{
                //    Title = "mr",
                //    ForName1 = "Sat",
                //    ForName2 = "Ch",
                //    SurName = "Gat",
                //    Email = "*****@*****.**",
                //    AddressLine1 = "awdas",
                //    AddressLine2 = "asdasdsa",
                //    AddressLine3 = "www",
                //    Country = "UK",
                //    Postcode = "E11",
                //    Mobile = "01111",
                //    SenderPassword = "******",
                //    Telephone = "5131",
                //    Type = SenderType.Individual,
                //    HMRCUserId = "VATDEC180a01",
                //    HMRCPassword = "******"

                //};
                //ctx.Sender.Add(sen);
                //ctx.SaveChanges();
                GovTalkMessage msg = new GovTalkMessage()
                {
                };
                //SuccessResponseIRmarkReceipt ir = new SuccessResponseIRmarkReceipt
                //{

                //};
                //SuccessResponse resp = new SuccessResponse()
                //{
                //    //IRmarkReceipt = ir,
                //    AcceptedTime = DateTime.Now,
                //    AcceptedTimeSpecified = true,
                //    ResponseData_IsEmpty = true,



                //};

                //ctx.SucessResponse.Add(resp);
                ctx.SaveChanges();

                Client clt = new Client()
                {
                    Name  = "London Borough Of Redbride",
                    RegNo = "Reg123456789",
                    VATNo = "VAT123456"
                };

                ctx.Client.Add(clt);
                ctx.SaveChanges();

                Business bu = new Business()
                {
                    BusinessName   = "TEST",
                    BusinessId     = 1,
                    TradingName    = "TEST",
                    RegisteredDate = DateTime.Now,
                    VATRegNo       = "123456",
                    SenderId       = 1
                };
                BusinessAddress bud = new BusinessAddress()
                {
                    Line1    = "test",
                    Line2    = "test2",
                    Line3    = "test3",
                    Line4    = "test5",
                    Postcode = "IG1",
                    Country  = "UK"
                };
                bu.BusinessAddress = bud;

                //ctx.BusinessAddress.Add(bud);
                //ctx.Business.Add(bu);
                // ctx.SaveChanges();



                PeriodData per = new PeriodData()
                {
                    StartPeriod = DateTime.Now.AddMonths(-3),
                    EndPeriod   = DateTime.Now,
                    PeriodrefId = "2017-04",
                    Status      = SubmissionStatus.Draft
                };
                VAT100 vat = new VAT100()
                {
                };
                //per.VAT100 = vat;


                bu.Periods.Add(per);

                Client cl = new Client()
                {
                    //Id = 1,
                    Name  = "consoleC",
                    RegNo = "123",
                    VATNo = "1234567"
                };

                ClientAddress cd = new ClientAddress()
                {
                    Address1        = "First line of add",
                    Address2        = "Second line of add",
                    City            = "Lonodn",
                    ClientAddressId = 1,
                    Country         = "UK",
                    PostCode        = "SS1",
                };

                PeriodData per1 = new PeriodData()
                {
                    StartPeriod = DateTime.Now.AddMonths(-3),
                    EndPeriod   = DateTime.Now,
                    PeriodrefId = "2017-07",
                    Status      = SubmissionStatus.Draft
                };
                bu.Periods.Add(per1);

                //works above


                cl.ClientAddress = cd;
                //ctx.Client.Add(cl);
                //ctx.SaveChanges();
                //ctx.SaveChanges();
                //var cup = ctx.ClientAddress.FirstOrDefault();
                //cup.Address1 = "New Update address";
                //var c = ctx.Client.FirstOrDefault();

                //c.ClientAddress = cup;

                //ctx.Client.Add(c);


                // ctx.Client.Add(cl);
                InvoiceDetail invd = new InvoiceDetail();
                invd.No        = "LBR-1";
                invd.IssueDate = DateTime.Now;
                invd.DueDate   = DateTime.Now.AddDays(7);
                invd.Note      = "test";
                invd.Ref       = "nothing";
                invd.Discount  = "10%";

                InvoiceItem item     = new InvoiceItem();
                var         itemguid = Guid.Parse("00000000-0000-0000-0000-000000000000");
                item.Id          = itemguid;
                item.Description = "apple";
                item.Quantity    = "1";
                item.Price       = "1";
                item.Total       = "1";
                item.SubTotal    = "1";
                item.VAT         = "0";
                item.VATRate     = "0";



                List <InvoiceItem> items = new List <InvoiceItem>();
                items.Add(item);
                var myguid = Guid.Parse("3551A09E-DE21-A325-6DF4-40281A4FEBE0");
                //var inv = ctx.Invoice.Where(i => i.InvoiceId == myguid)
                //            .Include(d => d.InvoiceDetail)
                //            .Include(it => it.InvoiceItems)
                //            .FirstOrDefault();


                //ctx.Entry(inv).CurrentValues.SetValues(inv);
                //foreach (var it in items)
                //{
                //    var existingChild = inv.InvoiceItems.Where(c => c.Id == it.Id).SingleOrDefault();
                //    if(existingChild!=null)
                //    {
                //        ctx.Entry(existingChild).CurrentValues.SetValues(it);

                //    }
                //    else
                //    {
                //        Console.WriteLine("add new item");
                //        inv.InvoiceItems.Add(item);
                //    }
                //}

                //ctx.Entry(inv).State = EntityState.Modified;

                //Invoice myinvoice = new Invoice();
                //myinvoice.ClientId = 3;
                //myinvoice.InvoiceDetail = invd;
                //myinvoice.InvoiceItems = items;
                //ctx.Invoice.Add(myinvoice);
                //ctx.SaveChanges();
                // bu.Periods.Add(per1);

                // ctx.Business.Add(bu);

                //cl.ClientAddress = cd;
                //ctx.Client.Add(cl);
                //ctx.SaveChanges();
            }
        }
Esempio n. 23
0
        public static XDocument GovTalkMessageToXDocument(GovTalkMessage govTalkMessage)
        {
            if (govTalkMessage != null)
            {
                XNamespace ns  = "http://www.govtalk.gov.uk/CM/envelope";
                XDocument  doc =
                    new XDocument(
                        new XDeclaration("1.0", "UTF-16", null),
                        new XElement(ns + "GovTalkMessage",
                                     new XElement("EnvelopeVersion", govTalkMessage.EnvelopeVersion.ToString()),
                                     new XElement("Header",
                                                  new XElement("MessageDetails",
                                                               new XElement("Class",
                                                                            govTalkMessage.Header.MessageDetails.Class.ToString()),
                                                               new XElement("Qualifier", govTalkMessage.Header.MessageDetails.Qualifier.ToString()),
                                                               new XElement("Function", govTalkMessage.Header.MessageDetails.Function.ToString()),
                                                               new XElement("CorrelationID",
                                                                            govTalkMessage.Header.MessageDetails.CorrelationID.ToString()),
                                                               new XElement("Transformation",
                                                                            govTalkMessage.Header.MessageDetails.Transformation.ToString()),
                                                               new XElement("GatewayTest",
                                                                            govTalkMessage.Header.MessageDetails.GatewayTest.ToString())
                                                               ),
                                                  new XElement("SenderDetails",
                                                               new XElement("IDAuthentication",
                                                                            new XElement("SenderID",
                                                                                         govTalkMessage.Header.SenderDetails.IDAuthentication.SenderID.ToString()),
                                                                            new XElement("Authentication",
                                                                                         new XElement("Method",
                                                                                                      govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                                          x => x.Method).FirstOrDefault().ToString()),
                                                                                         new XElement("Role",
                                                                                                      govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                                          x => x.Role).FirstOrDefault().ToString()),
                                                                                         new XElement("Value",
                                                                                                      govTalkMessage.Header.SenderDetails.IDAuthentication.Authentication.Select(
                                                                                                          x => x.Item).FirstOrDefault().ToString())
                                                                                         )),
                                                               new XElement("EmailAddress",
                                                                            govTalkMessage.Header.SenderDetails.EmailAddress.ToString()))
                                                  ),
                                     new XElement("GovTalkDetails",
                                                  new XElement("Keys",
                                                               new XElement("Key", new XAttribute("Type", "VATRegNo"),
                                                                            govTalkMessage.GovTalkDetails.Keys.Select(x => x.Value)
                                                                            .FirstOrDefault()
                                                                            .ToString())),
                                                  new XElement("ChannelRouting",
                                                               new XElement("Channel",
                                                                            new XElement("URI",
                                                                                         govTalkMessage.GovTalkDetails.ChannelRouting.Select(u => u.Channel.Item)
                                                                                         .FirstOrDefault()
                                                                                         .ToString()),
                                                                            new XElement("Product",
                                                                                         govTalkMessage.GovTalkDetails.ChannelRouting.Select(
                                                                                             u => u.Channel.Product).FirstOrDefault().ToString()),
                                                                            new XElement("Version",
                                                                                         govTalkMessage.GovTalkDetails.ChannelRouting.Select(
                                                                                             u => u.Channel.Version).FirstOrDefault().ToString())
                                                                            )
                                                               )
                                                  ),
                                     new XElement("Body"
                                                  //new XElement()
                                                  ))
                        );
                foreach (var element in doc.Descendants()) //just add namespace using for each instead of hard coding
                {
                    element.Name = ns + element.Name.LocalName;
                }

                XElement xe = XElement.Parse(govTalkMessage.Body.Any.SingleOrDefault().OuterXml.ToString());
                doc.Root.Element(ns + "Body").Add(xe);
                return(doc);
            }
            return(null);
        }
Esempio n. 24
0
        public GovTalkMessage CreateGovTalkMessage(Sender sender, Business business, PeriodData periodData, VAT100 vatData, bool testInLive)
        {
            string classType   = !testInLive ? "HMRC-VAT-DEC" : "HMRC-VAT-DEC-TIL";
            string gatewayTest = !testInLive ? "0" : "1";

            //Gov Talk message
            GovTalkMessage govTalkMessage = new GovTalkMessage();
            //Gov Talk header
            GovTalkMessageHeader header = new GovTalkMessageHeader();
            //sender details
            GovTalkMessageHeaderSenderDetails senderDetails          = new GovTalkMessageHeaderSenderDetails();
            GovTalkMessageHeaderSenderDetailsIDAuthentication idauth = new GovTalkMessageHeaderSenderDetailsIDAuthentication();

            idauth.SenderID = sender.HMRCUserId;
            GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication aauth = new GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication();

            aauth.Method = GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthenticationMethod.clear;
            aauth.Role   = "principal";
            aauth.Item   = sender.HMRCPassword;
            GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication[] authentications = new GovTalkMessageHeaderSenderDetailsIDAuthenticationAuthentication[1];
            authentications[0]             = aauth;
            idauth.Authentication          = authentications;
            senderDetails.IDAuthentication = idauth;
            senderDetails.EmailAddress     = sender.Email;
            //message details
            GovTalkMessageHeaderMessageDetails messagedetails = new GovTalkMessageHeaderMessageDetails();

            messagedetails.Class                   = classType;
            messagedetails.Qualifier               = GovTalkMessageHeaderMessageDetailsQualifier.request;
            messagedetails.Function                = GovTalkMessageHeaderMessageDetailsFunction.submit;
            messagedetails.FunctionSpecified       = true;
            messagedetails.CorrelationID           = "";
            messagedetails.Transformation          = GovTalkMessageHeaderMessageDetailsTransformation.XML;
            messagedetails.GatewayTest             = gatewayTest;
            messagedetails.TransformationSpecified = true;
            header.MessageDetails                  = messagedetails;
            header.SenderDetails                   = senderDetails;
            //Gov Talk details
            GovTalkMessageGovTalkDetails govTalkDetails = new GovTalkMessageGovTalkDetails();
            //keys
            GovTalkMessageGovTalkDetailsKey key = new GovTalkMessageGovTalkDetailsKey();

            key.Type  = ConfigurationManager.AppSettings["GovTalkDetailsKeyType"];
            key.Value = business.VATRegNo.ToString();
            GovTalkMessageGovTalkDetailsKey[] keys = new GovTalkMessageGovTalkDetailsKey[1];
            keys[0] = key;
            //Channel routing
            GovTalkMessageGovTalkDetailsChannelRoutingChannel channel = new GovTalkMessageGovTalkDetailsChannelRoutingChannel();

            channel.Version         = ConfigurationManager.AppSettings["ChannelVersion"];
            channel.Product         = ConfigurationManager.AppSettings["ChannelProduct"];
            channel.ItemElementName = ItemChoiceType.URI;
            channel.Item            = ConfigurationManager.AppSettings["ChannelUri"];
            GovTalkMessageGovTalkDetailsChannelRouting channelRouting = new GovTalkMessageGovTalkDetailsChannelRouting();

            channelRouting.Channel = channel;
            GovTalkMessageGovTalkDetailsChannelRouting[] channelRoutings = new GovTalkMessageGovTalkDetailsChannelRouting[1];
            channelRoutings[0]            = channelRouting;
            govTalkDetails.Keys           = keys;
            govTalkDetails.ChannelRouting = channelRoutings;

            //Gov Talk Body
            GovTalkMessageBody body = new GovTalkMessageBody();
            //populate body content with ir68 data
            //IR68 ir68 = new IR68(periodData, vatData);         //commented out to use method instead of object instantiation with period/vat data
            //IRenvelope iRenvelope = ir68.CreateIREnvelopeBody(sender, business);

            IRenvelope iRenvelope = CreateIRenvelopeBody(sender, business, periodData, vatData);
            //serialse ir object data into xml elements and add to Gov Talk body
            //XElement xe = XElement.Parse(SerializeIrEnvelope(iRenvelope));
            XElement   xe       = XElement.Parse(IREnvelopeToXDocument(iRenvelope).ToString());
            XmlElement xelement = ToXmlElement(xe);

            XmlElement[] xmlElements = new XmlElement[1];
            xmlElements[0] = xelement;
            body.Any       = xmlElements;
            govTalkMessage.EnvelopeVersion = ConfigurationManager.AppSettings["GovTalkMessageEnvelopeVersion"];
            govTalkMessage.Header          = header;
            govTalkMessage.GovTalkDetails  = govTalkDetails;
            govTalkMessage.Body            = body;
            return(govTalkMessage);
        }