///<summary>Returns an XML payload that includes common information required by most HQ hosted services (e.g. reg key, program version, etc).</summary> ///<param name="registrationKey">An Open Dental distributed registration key that HQ has on file. Do not include hyphens.</param> ///<param name="practiceTitle">Any string is acceptable.</param> ///<param name="practicePhone">Any string is acceptable.</param> ///<param name="programVersion">Typically major.minor.build.revision. E.g. 12.4.58.0</param> ///<param name="payloadContentxAsXml">Use CreateXmlWriterSettings(true) to create your payload xml. Outer-most xml element MUST be labeled 'Payload'.</param> ///<param name="serviceCode">Used on case by case basis to validate that customer is registered for the given service.</param> ///<returns>An XML string that can be passed into an HQ hosted web method.</returns> public static string CreatePayload( string payloadContentxAsXml, eServiceCode serviceCode, string registrationKey = null, string practiceTitle = null, string practicePhone = null, string programVersion = null) { StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(false))) { writer.WriteStartElement("Request"); writer.WriteStartElement("Credentials"); writer.WriteStartElement("RegistrationKey"); writer.WriteString(registrationKey ?? PrefC.GetString(PrefName.RegistrationKey)); writer.WriteEndElement(); writer.WriteStartElement("PracticeTitle"); writer.WriteString(practiceTitle ?? PrefC.GetString(PrefName.PracticeTitle)); writer.WriteEndElement(); writer.WriteStartElement("PracticePhone"); writer.WriteString(practicePhone ?? PrefC.GetString(PrefName.PracticePhone)); writer.WriteEndElement(); writer.WriteStartElement("ProgramVersion"); writer.WriteString(programVersion ?? PrefC.GetString(PrefName.ProgramVersion)); writer.WriteEndElement(); writer.WriteStartElement("ServiceCode"); writer.WriteString(serviceCode.ToString()); writer.WriteEndElement(); writer.WriteEndElement(); //Credentials writer.WriteRaw(payloadContentxAsXml); writer.WriteEndElement(); //Request } return(strbuild.ToString()); }
public new string EServiceSetup(string officeData) { try { WebServiceMainHQProxy.EServiceSetup.SignupOut signupOut = new WebServiceMainHQProxy.EServiceSetup.SignupOut() { EServices = GetEServicesForAll(), HasClinics = PrefC.HasClinicsEnabled, ListenerTypeInt = (int)ListenerServiceType.ListenerServiceProxy, MethodNameInt = (int)WebServiceMainHQProxy.EServiceSetup.SetupMethod.GetSignupOutFull, Phones = GetPhonesForAll(), Prompts = new List <string>(), SignupPortalPermissionInt = (int)SignupPortalPermission.FullPermission, SignupPortalUrl = GetHostedUrlForCode(eServiceCode.SignupPortal), }; //Write the response out as a plain string. We will deserialize it on the other side. return(WebSerializer.SerializePrimitive <string>(WebSerializer.WriteXml(signupOut))); } catch (Exception ex) { StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(true))) { writer.WriteStartElement("Response"); writer.WriteStartElement("Error"); writer.WriteString(ex.Message); writer.WriteEndElement(); writer.WriteEndElement(); } return(strbuild.ToString()); } }
///<summary>Returns an XML string that contains the given content only.</summary> public static string CreateSuccessResponse <T>(T content) { StringBuilder strbuild = new StringBuilder(); XmlSerializer xmlContentSerializer = new XmlSerializer(typeof(T)); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(false))) { xmlContentSerializer.Serialize(writer, content); } return(strbuild.ToString()); }
///<summary>Returns Response-Error payload with given error text. Called from OpenDentalWebApps.</summary> public static string CreateErrorResponse(string error) { StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(false))) { writer.WriteStartElement("Response"); writer.WriteStartElement("Error"); writer.WriteString(error); writer.WriteEndElement(); writer.WriteEndElement(); } return(strbuild.ToString()); }
///<summary>Returns XML string with a Response element that contains the given content with nodeName. Called from OpenDentalWebApps.</summary> public static string CreateSuccessResponse <T>(T content, string nodeName) { StringBuilder strbuild = new StringBuilder(); XmlSerializer xmlContentSerializer = new XmlSerializer(typeof(T)); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(false))) { writer.WriteStartElement("Response"); writer.WriteStartElement(nodeName); xmlContentSerializer.Serialize(writer, content); writer.WriteEndElement(); writer.WriteEndElement(); } return(strbuild.ToString()); }
///<summary>Surround with try/catch. Returns true if all messages succeded, throws exception if it failed. ///All Integrated Texting should use this method, CallFire texting does not use this method.</summary> public static void SendSms(List <SmsToMobile> listMessages) { //No need to check RemotingRole; no call to db. if (Plugins.HookMethod(null, "SmsToMobiles.SendSms_start", listMessages)) { return; } if (listMessages == null || listMessages.Count == 0) { throw new Exception("No messages to send."); } StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(true))){ writer.WriteStartElement("Payload"); writer.WriteStartElement("ListSmsToMobile"); System.Xml.Serialization.XmlSerializer xmlListSmsToMobileSerializer = new System.Xml.Serialization.XmlSerializer(typeof(List <SmsToMobile>)); xmlListSmsToMobileSerializer.Serialize(writer, listMessages); writer.WriteEndElement(); //ListSmsToMobile writer.WriteEndElement(); //Payload } string result = ""; try { result = WebServiceMainHQProxy.GetWebServiceMainHQInstance() .SmsSend(PayloadHelper.CreatePayload(strbuild.ToString(), eServiceCode.IntegratedTexting)); } catch (Exception ex) { ex.DoNothing(); throw new Exception("Unable to send using web service."); } XmlDocument doc = new XmlDocument(); doc.LoadXml(result); XmlNode node = doc.SelectSingleNode("//Error"); if (node != null) { throw new Exception(node.InnerText); } node = doc.SelectSingleNode("//Success"); if (node != null) { return; } //Should never happen, we didn't get an explicit fail or success throw new Exception("Unknown error has occurred."); }
///<summary>Creates an XML string for the payload of the provided content. The list passed in is a tuple where the first item is the content to ///be serialized and the second item is the tag name for the content.</summary> public static string CreatePayloadContent(List <PayloadItem> listPayloadItems) { StringBuilder strbuild = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(strbuild, WebSerializer.CreateXmlWriterSettings(true))) { writer.WriteStartElement("Payload"); foreach (PayloadItem payLoadItem in listPayloadItems) { XmlSerializer xmlListConfirmationRequestSerializer = new XmlSerializer(payLoadItem.Content.GetType()); writer.WriteStartElement(payLoadItem.TagName); xmlListConfirmationRequestSerializer.Serialize(writer, payLoadItem.Content); writer.WriteEndElement(); } writer.WriteEndElement(); //Payload } return(strbuild.ToString()); }