예제 #1
0
        private bool UpdateAddress(bool validate)
        {
            // NEED TO REGISTER USER
            if (AbleContext.Current.User.IsAnonymous)
            {
                if (CreateNewAccountPanel.Visible)
                {
                    if (!CreateNewAccount())
                    {
                        return(false);
                    }
                    else
                    {
                        CreateNewAccountPanel.Visible = false;
                    }
                }
                else
                {
                    // VALIDATE EMAIL, IF EMAIL IS ALREADY REGISTERED, ASK FOR LOGIN
                    string newEmail = StringHelper.StripHtml(BillToEmail.Text);
                    if (UserDataSource.IsEmailRegistered(newEmail))
                    {
                        InvalidRegistration.IsValid      = false;
                        InvalidRegistration.ErrorMessage = "The email address you have provided is already registered. Please sign in to access your account.";
                        return(false);
                    }

                    // ANONYMOUS USER SELECTING GUEST CHECKOUT, CREATE TEMPORARY ACCOUNT
                    User   oldUser     = AbleContext.Current.User;
                    string newUserName = "******" + Guid.NewGuid().ToString("N") + "@domain.xyz";
                    string newPassword = Guid.NewGuid().ToString("N");
                    MembershipCreateStatus createStatus;
                    User newUser = UserDataSource.CreateUser(newUserName, newEmail, newPassword, string.Empty, string.Empty, true, 0, out createStatus);

                    // IF THE CREATE FAILS, IGNORE AND CONTINUE CREATING THE ORDER
                    if (createStatus == MembershipCreateStatus.Success)
                    {
                        // CHANGE THE NAME AND EMAIL TO SOMETHING MORE FRIENDLY THAN GUID
                        newUser.UserName = "******" + newUser.Id.ToString() + "@domain.xyz";
                        newUser.Save();
                        CommerceBuilder.Users.User.Migrate(oldUser, newUser, true, true);
                        AbleContext.Current.User = newUser;
                        FormsAuthentication.SetAuthCookie(newUser.UserName, false);
                    }
                }
            }

            // MAILING LIST SIGNUP
            if (EmailLists.Visible && EmailLists.Items.Count > 0)
            {
                string            email      = AbleContext.Current.User.Email;
                int               listIndex  = 0;
                IList <EmailList> emailLists = GetPublicEmailLists();
                if (emailLists != null && emailLists.Count > 0)
                {
                    foreach (ListViewDataItem item in EmailLists.Items)
                    {
                        EmailList list     = emailLists[listIndex];
                        CheckBox  selected = (CheckBox)item.FindControl("Selected");
                        if (selected != null)
                        {
                            if (selected.Checked)
                            {
                                EmailListSignup signup = EmailListSignupDataSource.Load(list.Id, email);
                                if (signup == null || signup.SignupDate < LocaleHelper.LocalNow.AddMinutes(-5))
                                {
                                    list.ProcessSignupRequest(email);
                                }
                            }
                            else
                            {
                                list.RemoveMember(email);
                            }
                        }
                        else
                        {
                            list.RemoveMember(email);
                        }
                        listIndex++;
                    }
                }
            }

            string provinceName = string.Empty;

            if (ValidateProvince(out provinceName))
            {
                Address address   = AbleContext.Current.User.PrimaryAddress;
                string  address1  = StringHelper.StripHtml(Address1.Text);
                string  address2  = StringHelper.StripHtml(Address2.Text);
                string  city      = StringHelper.StripHtml(City.Text);
                string  postColde = StringHelper.StripHtml(PostalCode.Text);
                if (address.Address1 != address1 || address.Address2 != address2 || address.City != city || address.Province != provinceName || address.PostalCode != postColde)
                {
                    address.Validated = false;
                }
                address.FirstName   = StringHelper.StripHtml(FirstName.Text);
                address.LastName    = StringHelper.StripHtml(LastName.Text);
                address.Address1    = address1;
                address.Address2    = address2;
                address.Company     = StringHelper.StripHtml(Company.Text);
                address.Email       = trEmail.Visible ? StringHelper.StripHtml(BillToEmail.Text) : StringHelper.StripHtml(UserName.Text);
                address.City        = city;
                address.Province    = provinceName;
                address.PostalCode  = postColde;
                address.CountryCode = Country.SelectedValue;
                address.Phone       = StringHelper.StripHtml(Telephone.Text);
                address.Fax         = StringHelper.StripHtml(Fax.Text);
                address.Residence   = !IsBusinessAddress.Checked;
                address.Save();

                if (validate && !address.Validated && _addressValidator != null)
                {
                    AddressValidationResponse avr = _addressValidator.ValidateAddress(address);
                    if (avr != null)
                    {
                        if (!avr.IsValid.HasValue || !avr.IsValid.Value)
                        {
                            ValidAddresses = avr.Addresses;
                            if (ValidAddresses != null)
                            {
                                int index = 0;
                                foreach (ValidAddress validAddress in ValidAddresses)
                                {
                                    validAddress.Id = ++index;
                                }

                                ValidAddressesList.DataSource = ValidAddresses;
                                ValidAddressesList.DataBind();
                                ValidAddressesPanel.Visible = true;
                                ValidAddressesList.Items.Add(new ListItem("Use the address exactly as I entered it", "0"));
                                ValidAddressesList.Items[0].Selected = true;
                                if (ValidAddressesList.Items.Count > 1)
                                {
                                    PHAddressFound.Visible = true;
                                    PHNoAddress.Visible    = false;
                                }
                                else
                                {
                                    PHAddressFound.Visible = false;
                                    PHNoAddress.Visible    = true;
                                }

                                return(false);
                            }
                        }
                    }
                }
            }
            else
            {
                Province2Invalid.IsValid = false;
                UpdateCountry();
                return(false);
            }

            return(true);
        }
예제 #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string action = Request.QueryString["action"];

            if (!string.IsNullOrEmpty(action))
            {
                //DETERMINE THE ACTION
                action = action.ToLowerInvariant();
                if (action == "remove")
                {
                    //delete user from the list
                    int    emailListId = AlwaysConvert.ToInt(Request.QueryString["list"]);
                    string email       = Request.QueryString["email"];
                    string key         = Request.QueryString["key"];
                    AbleContext.Current.Database.BeginTransaction();
                    EmailList list = EmailListDataSource.Load(emailListId);
                    if ((list != null) && (email != null))
                    {
                        string        eluKey = string.Empty;
                        EmailListUser elu    = EmailListUserDataSource.Load(emailListId, email);
                        if (elu != null)
                        {
                            eluKey = elu.SignupDate.ToString("MMddyyhhmmss");
                        }
                        if (key == eluKey)
                        {
                            list.RemoveMember(email);
                            phMessage.Controls.Add(new LiteralControl(string.Format(this.DeletedMessage, list.Name)));
                        }
                    }
                    AbleContext.Current.Database.CommitTransaction();
                }
                else if (action == "confirm")
                {
                    //ADD USER TO LIST
                    int    emailListId = AlwaysConvert.ToInt(Request.QueryString["list"]);
                    string email       = Request.QueryString["email"];
                    string key         = Request.QueryString["key"];
                    AbleContext.Current.Database.BeginTransaction();
                    EmailList list = EmailListDataSource.Load(emailListId);
                    if ((list == null) || !ValidationHelper.IsValidEmail(email))
                    {
                        Response.Redirect(AbleCommerce.Code.NavigationHelper.GetHomeUrl());
                    }
                    EmailListSignup signup = EmailListSignupDataSource.Load(emailListId, email);
                    if (signup != null)
                    {
                        if (key == signup.SignupKey)
                        {
                            signup.Activate();

                            //confirm user subscription
                            phMessage.Controls.Add(new LiteralControl(string.Format(this.SubscribedMessage, list.Name)));
                        }
                    }
                    else if (EmailListUserDataSource.Load(emailListId, email) != null)
                    {
                        //CHECK IF USER HAS ALREADY ACTIVATED
                        //confirm user subscription
                        phMessage.Controls.Add(new LiteralControl(string.Format(this.SubscribedMessage, list.Name)));
                    }
                    AbleContext.Current.Database.CommitTransaction();
                }
                else if (action == "unsubrr")
                {
                    int    userId = AlwaysConvert.ToInt(Request.QueryString["uid"]);
                    string email  = Request.QueryString["email"];
                    if (string.IsNullOrEmpty(email))
                    {
                        return;
                    }

                    CommerceBuilder.Users.User user = CommerceBuilder.Users.UserDataSource.Load(userId);
                    if (user != null && email.ToLowerInvariant() == user.Email.ToLowerInvariant())
                    {
                        user.Settings.OptOutReviewReminders = true;
                        user.Save();
                        string message = "You have successfully unsubscribed from all future product review invitations. If you are a registered user, you may join again by logging into your account and updating your profile.";
                        phMessage.Controls.Add(new LiteralControl(message));
                    }
                }
            }

            //IF RESPONSE IS EMPTY, REQUEST IS INVALID
            if (phMessage.Controls.Count == 0)
            {
                phMessage.Controls.Add(new LiteralControl(this.InvalidMessage));
            }
        }