public void InitialiseGovTalkMessage(ILoggingService loggingService) { _govTalkMessage = new GovTalkMessage(); _loggingService = loggingService; loggingService.LogInfo(this, "Initialised GovTalkMessage."); }
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()); }
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); } }
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); }
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); }
// 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."); }
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); }
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; } }
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(); }
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."); }
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); }
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; } }
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); }
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); }
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."); }
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); }
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); }
/// <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."); }
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 }
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"); }
/// <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); }
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(); } }
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); }
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); }