コード例 #1
0
ファイル: PayloadHelper.cs プロジェクト: ChemBrain/OpenDental
        ///<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());
        }
コード例 #2
0
 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());
     }
 }
コード例 #3
0
ファイル: PayloadHelper.cs プロジェクト: ChemBrain/OpenDental
        ///<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());
        }
コード例 #4
0
ファイル: PayloadHelper.cs プロジェクト: ChemBrain/OpenDental
        ///<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());
        }
コード例 #5
0
ファイル: PayloadHelper.cs プロジェクト: ChemBrain/OpenDental
        ///<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());
        }
コード例 #6
0
        ///<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.");
        }
コード例 #7
0
ファイル: PayloadHelper.cs プロジェクト: ChemBrain/OpenDental
        ///<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());
        }