Imports BVSoftware.BVC.Core Public Class Users_Edit Inherits BaseAdminPage Protected WithEvents inUsername As System.Web.UI.WebControls.TextBox Protected WithEvents val2Username As System.Web.UI.WebControls.RequiredFieldValidator Protected WithEvents valUsername As System.Web.UI.WebControls.RegularExpressionValidator Protected WithEvents inFirstName As System.Web.UI.WebControls.TextBox Protected WithEvents valFirstName As System.Web.UI.WebControls.RequiredFieldValidator Protected WithEvents inLastName As System.Web.UI.WebControls.TextBox Protected WithEvents RequiredFieldValidator1 As System.Web.UI.WebControls.RequiredFieldValidator Protected WithEvents btnCancel As System.Web.UI.WebControls.ImageButton Protected WithEvents FirstFocus1 As MetaBuilders.WebControls.FirstFocus Protected WithEvents SaveChangesButton As System.Web.UI.WebControls.ImageButton Protected WithEvents ResetPassword As System.Web.UI.WebControls.ImageButton Protected WithEvents MemberList As System.Web.UI.WebControls.ListBox Protected WithEvents AddButton As System.Web.UI.WebControls.ImageButton Protected WithEvents RemoveButton As System.Web.UI.WebControls.ImageButton Protected WithEvents NonMemberList As System.Web.UI.WebControls.ListBox Protected WithEvents NewPassword As System.Web.UI.WebControls.TextBox Protected WithEvents NewPasswordLabel As System.Web.UI.WebControls.Label Protected WithEvents MetaDescriptionControl As BVSoftware.WebControls.MetaTag Protected WithEvents MetaKeywordsControl As BVSoftware.WebControls.MetaTag Protected WithEvents chkTaxExempt As System.Web.UI.WebControls.CheckBox Protected WithEvents lstPricingLevel As BVSoftware.WebControls.SelectDropDownList Protected WithEvents btnEditPricingLevels As System.Web.UI.WebControls.ImageButton Protected WithEvents valSummary As System.Web.UI.WebControls.ValidationSummary Protected WithEvents msg As BVSoftware.WebControls.WebPageMessage Protected WithEvents AddressList As System.Web.UI.WebControls.DataList Protected WithEvents btnNewAddress As System.Web.UI.WebControls.ImageButton Protected WithEvents DefaultButtons1 As MetaBuilders.WebControls.DefaultButtons #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load BVC2004Store.CheckThisPage(Security.RolePermission.LoginToAdmin) BVC2004Store.CheckThisPage(Security.RolePermission.AccessPeopleArea) If Not Page.IsPostBack Then MetaKeywordsControl.Content = WebAppSettings.MetaKeywords MetaDescriptionControl.Content = WebAppSettings.MetaDescription End If If Not Page.IsPostBack Then Dim userID As String If Not Request.Params("id") Is Nothing Then userID = Request.Params("id") ViewState("UserID") = userID End If LoadUserInfo() End If End Sub Sub LoadUserInfo() Dim thisUser As Membership.UserAccount thisUser = MembershipServices.GetUserByID(ViewState("UserID")) If Not thisUser Is Nothing Then ViewState("UserName") = thisUser.UserName inUsername.Text = thisUser.UserName inFirstName.Text = thisUser.FirstName inLastName.Text = thisUser.LastName Me.chkTaxExempt.Checked = thisUser.TaxExempt Me.lstPricingLevel.SelectByValue(thisUser.PricingLevel) Else msg.ShowError("Couldn't Load User!") End If If Not Page.IsPostBack Then LoadAddresses(thisUser.Addresses) End If thisUser = Nothing LoadGroups() End Sub Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnCancel.Click Response.Redirect("people_Users.aspx", True) End Sub Private Sub SaveChangesButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles SaveChangesButton.Click msg.Clear() Save() If Save() = True Then Response.Redirect("people_users.aspx") End If End Sub Private Function Save() As Boolean Dim result As Boolean = False Dim thisUser As Membership.UserAccount thisUser = MembershipServices.GetUserByID(ViewState("UserID")) If Not thisUser Is Nothing Then thisUser.UserName = inUsername.Text.Trim() ViewState("UserName") = thisUser.UserName thisUser.Email = inUsername.Text.Trim() thisUser.FirstName = inFirstName.Text.Trim thisUser.LastName = inLastName.Text.Trim() thisUser.TaxExempt = Me.chkTaxExempt.Checked thisUser.PricingLevel = Me.lstPricingLevel.SelectedValue Try MembershipServices.UpdateUser(thisUser) result = True Catch CreateEx As Membership.BVMembershipUserException Select Case CreateEx.Status Case Membership.CreateUserStatus.UpdateFailed msg.ShowError("Update to user account failed.") Case Else msg.ShowError(CreateEx.Message) End Select End Try Else msg.ShowError("Couldn't Load User!") End If Return result End Function Private Sub ResetPassword_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ResetPassword.Click msg.Clear() If Me.NewPassword.Text.Trim.Length() > 5 Then Dim thisUser As Membership.UserAccount = MembershipServices.GetUserByID(ViewState("UserID")) If Not thisUser Is Nothing Then Dim crypto As New BVSoftware.Encryption.MD5Encryption thisUser.Password = crypto.Encode(NewPassword.Text, thisUser.Salt) Try MembershipServices.UpdateUser(thisUser) msg.ShowOK("Password reset to: " & NewPassword.Text) NewPassword.Text = "" Catch CreateEx As Membership.BVMembershipUserException Select Case CreateEx.Status Case Membership.CreateUserStatus.UpdateFailed msg.ShowError("Update to user account failed.") Case Else msg.ShowError(CreateEx.Message) End Select End Try Else msg.ShowError("Couldn't Load User!") End If Else msg.ShowWarning("New password must be at least 6 characters long") End If End Sub Private Sub AddButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles AddButton.Click Dim roles As New ArrayList Dim li As ListItem For Each li In NonMemberList.Items If li.Selected = True Then roles.Add(li.Value) End If Next Dim workingList(roles.Count - 1) As String roles.CopyTo(workingList) SecurityServices.Roles.AddUserToRoles(ViewState("UserName"), workingList) LoadGroups() End Sub Private Sub RemoveButton_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles RemoveButton.Click Dim roles As New ArrayList Dim li As ListItem For Each li In MemberList.Items If li.Selected = True Then roles.Add(li.Value) End If Next Dim workingList(roles.Count - 1) As String roles.CopyTo(workingList) SecurityServices.Roles.RemoveUserFromRoles(ViewState("UserName"), workingList) LoadGroups() End Sub Sub LoadGroups() MemberList.DataSource = SecurityServices.Roles.GetRolesForUser(ViewState("UserName")) 'MemberList.DataValueField = "id" 'MemberList.DataTextField = "name" MemberList.DataBind() NonMemberList.DataSource = SecurityServices.Roles.GetNonRolesForUser(ViewState("UserName")) 'NonMemberList.DataValueField = "id" 'NonMemberList.DataTextField = "name" NonMemberList.DataBind() End Sub Sub LoadAddresses(ByRef addressBook As Contacts.AddressCollection) AddressList.DataSource = addressBook AddressList.DataBind() End Sub Private Sub btnEditPricingLevels_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnEditPricingLevels.Click Save() Response.Redirect("people_pricingLevels.aspx?id=" & ViewState("UserID")) End Sub Private Sub btnNewAddress_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnNewAddress.Click Save() Response.Redirect("people_users_edit_address.aspx?CreateMode=1&userID=" & ViewState("UserID")) End Sub Private Sub AddressList_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles AddressList.EditCommand Save() Dim editID As Integer = e.Item.ItemIndex Response.Redirect("people_users_edit_address.aspx?index=" & editID & "&userID=" & ViewState("UserID")) End Sub Private Sub AddressList_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles AddressList.DeleteCommand Save() Dim thisUser As Membership.UserAccount thisUser = MembershipServices.GetUserByID(ViewState("UserID")) If Not thisUser Is Nothing Then Dim editID As Integer = e.Item.ItemIndex thisUser.Addresses.RemoveAt(editID) MembershipServices.UpdateUser(thisUser) LoadAddresses(thisUser.Addresses) End If End Sub Private Sub AddressList_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles AddressList.ItemDataBound If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim AddressDisplay As System.Web.UI.WebControls.Label AddressDisplay = e.Item.FindControl("AddressDisplay") If Not AddressDisplay Is Nothing Then AddressDisplay.Text = ContactServices.Addresses.ToHtmlString(CType(e.Item.DataItem, Contacts.Address)) End If End If End Sub End Class