/// <summary>
        /// Fills the AccountAddress object.
        /// </summary>
        /// <param name="baseResponse"></param>
        public void Fill(AccountAddress accountAddress)
        {
            try
            {
                // we are going to need this dataAccess assembly to get needed information.
                DalAccount dalAccount = new DalAccount();

                // now go get header information
                CustomerAccountSchema.CustomerAddress address =
                    dalAccount.GetCustomerAddress(_siteId, _siteCode,
                                                  _accountNumber.AccountNumber9);

                // if we don't get back an address, then its not a valid accountNumber.
                if (address == null)
                {
                    throw new InvalidAccountNumberException();
                }

                accountAddress.AccountNumber13 = _accountNumber.AccountNumber13;
                accountAddress.SiteCode        = _siteCode;
                accountAddress.SiteNumber      = _siteId.ToString();
                accountAddress.AddressLine1    = address.AddressLine1;
                accountAddress.AddressLine2    = address.AddressLine2;
                accountAddress.AddressLine3    = address.AddressLine3;
                accountAddress.AddressLine4    = address.AddressLine4;
                accountAddress.City            = address.City;
                accountAddress.State           = address.State;
                string zip4 = address.Zip4.Trim();
                string zip5 = address.Zip5.Trim();
                accountAddress.Zip = zip5;
                if (zip5 != null && zip5.Length > 0 &&
                    zip4 != null && zip4.Length > 0)
                {
                    accountAddress.Zip += "-" + zip4;
                }
                accountAddress.FirstName           = address.FirstName;
                accountAddress.MiddleInitial       = address.MiddleInitial;
                accountAddress.LastName            = address.LastName;
                accountAddress.HomeTelephoneNumber =
                    (address.IsHomeAreaCodeNull() || address.IsHomeExchangeCodeNull() || address.IsHomeTelephoneNumberNull())?
                    string.Empty:FormatPhoneNumber(address.HomeAreaCode, address.HomeExchangeCode, address.HomeTelephoneNumber);
                accountAddress.BusinessTelephoneNumber = (address.IsBusinessAreaCodeNull() || address.IsBusinessExchangeCodeNull() || address.IsBusinessTelephoneNumberNull())?
                                                         string.Empty:FormatPhoneNumber(address.BusinessAreaCode, address.BusinessAreaCode, address.BusinessTelephoneNumber);
                accountAddress.OtherTelephoneNumber = (address.IsOtherAreaCodeNull() || address.IsOtherExchangeCodeNull() || address.IsOtherTelephoneNumberNull())?
                                                      string.Empty:FormatPhoneNumber(address.OtherAreaCode, address.OtherExchangeCode, address.OtherTelephoneNumber);
                accountAddress.AccountNumber13 = _accountNumber.AccountNumber13;
                accountAddress.SiteCode        = _siteCode;
                accountAddress.SiteNumber      = _siteId.ToString();
            }
            catch (BusinessLogicLayerException)
            {
                // already handled
                throw;
            }
            catch (DataSourceException dse)
            {
                // not handled. need to handle
                throw new DataSourceUnavailableException(dse);
            }
            catch (Exception ex)
            {
                // not handled. need to handle
                throw new UnexpectedSystemException(ex);
            }
        }
        /// <summary>
        /// Fills the AccountAddress object.
        /// </summary>
        /// <param name="account"></param>
        private static void PopulateAccountInformation(CustomerContactInformation accountAddress, CustomerAccountSchema.CustomerAddress address)
        {
            if (address == null)
            {
                throw new InvalidAccountNumberException();
            }
            accountAddress.AccountNumber13 = address.Account_Number13.PadLeft(12, '0');
            accountAddress.SiteId          = int.Parse(address.Site_ID);
            accountAddress.AccountStatus   = address.AccountStatus;
            accountAddress.BillTypeCode    = address.BillType;
            accountAddress.FranchiseNumber = int.Parse(address.Franchise_Number);

            accountAddress.ServiceAddressLine1 = address.AddressLine1;
            accountAddress.ServiceAddressLine2 = address.AddressLine2;
            accountAddress.ServiceAddressLine3 = address.AddressLine3;
            accountAddress.ServiceAddressLine4 = address.AddressLine4;
            accountAddress.City                = address.City;
            accountAddress.State               = address.State;
            accountAddress.ZipCode4            = address.Zip4.Trim();
            accountAddress.ZipCode5            = address.Zip5.Trim();
            accountAddress.FirstName           = address.FirstName;
            accountAddress.MiddleInitial       = address.MiddleInitial;
            accountAddress.LastName            = address.LastName;
            accountAddress.CustomerName        = address.CustomerName;
            accountAddress.PhoneNumber10       = address.HomeTelephoneNumberFull;
            accountAddress.BusinessPhoneNumber = address.BusinessTelephoneNumberFull;
            accountAddress.OtherPhoneNumber    = address.OtherTelephoneNumberFull;
        }