void AddressValidationControl_VerifyAddressClicked(AddressValidationControl ucontrol)
        {
            ucontrol.useSuggested.CheckState = CheckState.Unchecked;
            _isErrorFromResponse = true;
            IContact contactRecord = _recordContext.GetWorkspaceRecord(RightNow.AddIns.Common.WorkspaceRecordType.Contact) as IContact;
            Address contactAddress = new Address();
            try
            {
                if (contactRecord.AddrCountryID != 1)
                {
                    string errorMsg = "Please--USA only postal address verification!";
                    ucontrol.addrValidResponseText.Text = errorMsg;
                    ConfigurationSetting.logWrap.NoticeLog(0, contactRecord.ID, logMessage: errorMsg);
                    return;
                }

                // get the contactRecord.Addrxxx
                contactAddress.Address2 = contactRecord.AddrStreet;
                contactAddress.City = contactRecord.AddrCity;
                if (contactRecord.AddrProvID != null)
                    contactAddress.StateID = (int)contactRecord.AddrProvID;
                contactAddress.Zip = contactRecord.AddrPostalCode;

                _responseAddr = null;

                _responseAddr = ValidateAddress(contactAddress);
                
                string addressStg = _responseAddr.Address2 + ", " + _responseAddr.City 
                    + ", " + _responseAddr.State + " " + _responseAddr.Zip5 + "-" + _responseAddr.Zip4;

                 ucontrol.addrValidResponseText.Text = "Address verified: " + addressStg;
                 _isErrorFromResponse = false;
                 ConfigurationSetting.logWrap.DebugLog(0, contactRecord.ID, logMessage: ucontrol.addrValidResponseText.Text);
                
                if (_responseAddr.ReturnText != null)
                {
                    string sanitizeMsg = _responseAddr.ReturnText.Replace("Default address:", "Address verified:");
                    ucontrol.addrValidResponseText.Text = sanitizeMsg + " " + addressStg; 
                }
            }
            catch (Exception e)
            {
                // log e.Message  
                if (e.Message.Contains("Authorization failure") ||
                    e.Message.Contains("Username exceeds maximum length") ||
                    e.Message.Contains("Misconfiguration or some other invalid data received."))
                    ConfigurationSetting.logWrap.ErrorLog(0, contactRecord.ID, logMessage: e.Message);
                else
                    ConfigurationSetting.logWrap.NoticeLog(0, contactRecord.ID, logMessage: e.Message);
                ucontrol.addrValidResponseText.Text = "Not valid: " + e.Message;
                _isErrorFromResponse = true;
            }
        }
        public Address ValidateAddress(Address address)
        {
            try
            {
                WebClient web = new WebClient();

                string validateUrl = "?API=Verify&XML=<AddressValidateRequest USERID=\"{0}\"><Address ID=\"{1}\"><Address1>{2}</Address1><Address2>{3}</Address2><City>{4}</City><State>{5}</State><Zip5>{6}</Zip5><Zip4>{7}</Zip4></Address></AddressValidateRequest>";            
                string url = _uspsURL + validateUrl;
                url = String.Format(url, _uspsUsername, address.ID.ToString(), address.Address1, address.Address2, 
                    address.City, address.State, address.Zip5, address.Zip4);

                string addressxml; 
                try
                {
                    addressxml = web.DownloadString(url);
                }
                catch (Exception ex)
                {
                    string msg = "Misconfiguration or some other invalid data received.";
                    throw new Exception(msg);
                }

                if (addressxml.Contains("<Error>"))
                {
                    int idx1 = addressxml.IndexOf("<Description>") + 13;
                    int idx2 = addressxml.IndexOf("</Description>");
                    int l = addressxml.Length;
                    string errDesc = addressxml.Substring(idx1, idx2 - idx1);
                    throw new Exception(errDesc);
                }

                return Address.getAddress(addressxml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        // Get an Address object from an xml response.
        public static Address getAddress(string xml)
        {
            Address a = new Address();

            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            doc.LoadXml(xml);

            System.Xml.XmlNode element = doc.SelectSingleNode("/AddressValidateResponse/Address/Address1");
            if (element != null)
                a._Address1 = element.InnerText;
            element = doc.SelectSingleNode("/AddressValidateResponse/Address/Address2");
            if (element != null)
                a._Address2 = element.InnerText;
            element = doc.SelectSingleNode("/AddressValidateResponse/Address/City");
            if (element != null)
                a._City = element.InnerText;
            element = doc.SelectSingleNode("/AddressValidateResponse/Address/State");
            if (element != null)
            {
                a._State = element.InnerText;
                a.StateID = (int)_reverseStateTable[a._State];
            }
            element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip5");
            if (element != null)
                a._Zip5 = element.InnerText;
            element = doc.SelectSingleNode("/AddressValidateResponse/Address/Zip4");
            if (element != null)
                a._Zip4 = element.InnerText;

            a.Zip = a.Zip5 + "-" + a.Zip4;

            if (a._Address1 != null && a._Address2 != null)
                a._Address2 += " " + a._Address1;

            element = doc.SelectSingleNode("/AddressValidateResponse/Address/ReturnText");
            if (element != null)
                a.ReturnText = element.InnerText; 

            return a;
        }