/// <summary>
        /// Helper to convert an Able Commerece user into an Umbraco member, no Services required for ease of testing
        /// </summary>
        /// <param name="legacyAccount">The Able Commerce customer model</param>
        /// <param name="umbracoMember">A temp or dummy Umbraco member that we can flesh out</param>
        /// <returns>A valid Umbraco member (not persisted) or null</returns>
        public static IMember ConvertToUmbracoMember(AbleCommerceLegacyLoginModel legacyAccount, IMember umbracoMember)
        {
            IMember customer = null;

            if (legacyAccount != null)
            {
                if (legacyAccount.IsValid)
                {
                    var memberDisplayName = String.IsNullOrEmpty(legacyAccount.FirstName)
                        ? legacyAccount.Username
                        : legacyAccount.Surname + ", " + legacyAccount.FirstName;

                    umbracoMember.Name     = memberDisplayName;
                    umbracoMember.Username = legacyAccount.Username;
                    umbracoMember.Email    = legacyAccount.Username;

                    umbracoMember.SetValue("ableCommerceId", legacyAccount.CustomerId);
                    umbracoMember.SetValue("firstname", legacyAccount.FirstName);
                    umbracoMember.SetValue("surname", legacyAccount.Surname);
                    umbracoMember.IsApproved = true;
                    customer = umbracoMember;
                }
            }

            return(customer);
        }
        /// <summary>
        /// Converts an Able Commerce user into an Umbraco member if valid, NOTE it DOES NOT persist the user, you need to do that with a .Save()
        /// </summary>
        /// <param name="legacyAccount"></param>
        /// <param name="services"></param>
        /// <returns>A valid IMember or null if there was an issue</returns>
        public static IMember ConvertToUmbracoMember(this AbleCommerceLegacyLoginModel legacyAccount, ServiceContext services)
        {
            // Create a dummy umbraco member but don't persist it. Bit long winded but do for ease of testing
            IMember tempUmbracoMember = services.MemberService.CreateMember(legacyAccount.Username, legacyAccount.Username, legacyAccount.Username, SiteConstants.MemberTypes.CustomerAlias);
            IMember customer          = ConvertToUmbracoMember(legacyAccount, tempUmbracoMember);

            if (customer != null)
            {
                // Valid customer so lets save their password, note this still does not save the member to Umbraco! Remember to do an actual "Save" when calling this one
                services.MemberService.SavePassword(customer, GetPasswordToSaveUmbracoUserWith(legacyAccount));
            }

            return(customer);
        }
 public static string GetPasswordToSaveUmbracoUserWith(AbleCommerceLegacyLoginModel legacyAccount)
 {
     // If password does not match assume user has forgot, import the user and set password to something temp,
     // then we will ask the user to reset their password somehow?
     return(legacyAccount.IsPasswordRecognised ? legacyAccount.Password : Guid.NewGuid().ToString());
 }