internal static BillingShippingUserInfo GetCustomerBillingAndShippingInfo(User user, OrdersManager ordersManager, UserProfileManager userProfileManager)
        {
            if (user == null)
            {
                return null; //don't do anything
            }

            CustomerRetriever customerRetriever = new CustomerRetriever(ordersManager, userProfileManager);

            Customer customer = customerRetriever.GetCustomerOfUser(user);

            if (customer == null)
            {
                return LoadDataFromSitefinityProfile();
            }

            IQueryable<CustomerAddress> customerAddresses = ordersManager.GetPrimaryCustomerAddressesByCustomerId(customer.Id);

            if (customerAddresses.Count() == 0)
            {
                return LoadDataFromSitefinityProfile();
            }

            var billingShippingInfo = new BillingShippingUserInfo();

            CustomerAddress customerBillingAddress = GetPrimaryCustomerAddress(customerAddresses, AddressType.Billing);

            billingShippingInfo.BillingFirstName = customerBillingAddress.FirstName;
            billingShippingInfo.BillingLastName = customerBillingAddress.LastName;
            billingShippingInfo.BillingCompany = customerBillingAddress.Company;
            billingShippingInfo.BillingEmail = customerBillingAddress.Email;
            billingShippingInfo.BillingAddress1 = customerBillingAddress.Address;
            billingShippingInfo.BillingAddress2 = customerBillingAddress.Address2;
            billingShippingInfo.BillingCity = customerBillingAddress.City;
            billingShippingInfo.BillingCountry = customerBillingAddress.Country;
            billingShippingInfo.BillingState = customerBillingAddress.StateRegion;
            billingShippingInfo.BillingZip = customerBillingAddress.PostalCode;
            billingShippingInfo.BillingPhoneNumber = customerBillingAddress.Phone;

            CustomerAddress customerShippingAddress = GetPrimaryCustomerAddress(customerAddresses, AddressType.Shipping);
            if (customerShippingAddress == null)
            {
                customerShippingAddress = customerBillingAddress;
            }
            billingShippingInfo.ShippingFirstName = customerShippingAddress.FirstName;
            billingShippingInfo.ShippingLastName = customerShippingAddress.LastName;
            billingShippingInfo.ShippingCompany = customerShippingAddress.Company;
            billingShippingInfo.ShippingEmail = customerShippingAddress.Email;
            billingShippingInfo.ShippingAddress1 = customerShippingAddress.Address;
            billingShippingInfo.ShippingAddress2 = customerShippingAddress.Address2;
            billingShippingInfo.ShippingCity = customerShippingAddress.City;
            billingShippingInfo.ShippingCountry = customerShippingAddress.Country;
            billingShippingInfo.ShippingState = customerShippingAddress.StateRegion;
            billingShippingInfo.ShippingZip = customerShippingAddress.PostalCode;
            billingShippingInfo.ShippingPhoneNumber = customerShippingAddress.Phone;

            return billingShippingInfo;
        }
        internal static BillingShippingUserInfo LoadDataFromSitefinityProfile()
        {
            User user = SecurityManager.GetUser(SecurityManager.GetCurrentUserId());
            if (user != null)
            {
                var sitefinityProfile = UserProfileHelper.GetSitefinityProfileOfUser(user);
                if (sitefinityProfile != null)
                {
                    var billingShippingUserInfo = new BillingShippingUserInfo();

                    billingShippingUserInfo.BillingFirstName = sitefinityProfile.FirstName;
                    billingShippingUserInfo.BillingLastName = sitefinityProfile.LastName;
                    billingShippingUserInfo.ShippingFirstName = sitefinityProfile.FirstName;
                    billingShippingUserInfo.ShippingLastName = sitefinityProfile.LastName;
                    billingShippingUserInfo.BillingEmail = sitefinityProfile.User.Email;
                    billingShippingUserInfo.ShippingEmail = sitefinityProfile.User.Email;

                    return billingShippingUserInfo;
                }
            }
            return null;
        }