public int?UpdateMembershipUserName(string applicationName, string userName, string newUserName)
 {
     return(ApartmentMethods.UpdateMembershipUserName(applicationName, userName, newUserName));
 }
        public AspUser SaveAspUser(AspUser saveUser)
        {
            if (saveUser != null)
            {
                MembershipProvider simpleProvider = Membership.Providers["SimpleProvider"];

                if (saveUser.UserId == Guid.Empty) //means this is new user : create user
                {
                    // Insert New Membership Account
                    MembershipCreateStatus status;
                    MembershipUser         newUser = Membership.CreateUser(saveUser.UserName, saveUser.Password, saveUser.Email,
                                                                           saveUser.PasswordQuestion, saveUser.PasswordAnswer, saveUser.IsApproved, out status);

                    if (status == MembershipCreateStatus.Success)
                    {
                        Guid newUserId = Utilities.ToGuid(newUser.ProviderUserKey);
                        ApartmentMethods.UpdateAspUserOrganisationId(newUserId, saveUser.OrganisationId);
                        saveUser = GetAspUser(newUserId);
                    }
                    else
                    {
                        switch (status)
                        {
                        case MembershipCreateStatus.DuplicateEmail:
                            saveUser.ErrorMessage = "The e-mail address already exists in the database for the application."; break;

                        case MembershipCreateStatus.DuplicateProviderUserKey:
                            saveUser.ErrorMessage = "The provider user key already exists in the database for the application."; break;

                        case MembershipCreateStatus.DuplicateUserName:
                            saveUser.ErrorMessage = "The user name already exists in the database for the application."; break;

                        case MembershipCreateStatus.InvalidAnswer:
                            saveUser.ErrorMessage = "The password answer is not formatted correctly."; break;

                        case MembershipCreateStatus.InvalidEmail:
                            saveUser.ErrorMessage = "The e-mail address is not formatted correctly."; break;

                        case MembershipCreateStatus.InvalidProviderUserKey:
                            saveUser.ErrorMessage = "The provider user key is of an invalid type or format."; break;

                        case MembershipCreateStatus.InvalidQuestion:
                            saveUser.ErrorMessage = "The password question is not formatted correctly."; break;

                        case MembershipCreateStatus.InvalidUserName:
                            saveUser.ErrorMessage = "The user name was not found in the database."; break;

                        case MembershipCreateStatus.InvalidPassword:
                            saveUser.ErrorMessage = "The password is not formatted correctly."; break;

                        default:
                            saveUser.ErrorMessage = "Fail to create new user";
                            break;
                        }
                    }
                }
                else
                {
                    MembershipUser memberShipUser = Membership.GetUser(saveUser.UserId);
                    int?           updateCode     = null;
                    if (memberShipUser.UserName != saveUser.UserName)
                    {
                        updateCode     = ApartmentMethods.UpdateMembershipUserName(Membership.ApplicationName, memberShipUser.UserName, saveUser.UserName);
                        memberShipUser = Membership.GetUser(saveUser.UserId);
                    }

                    string newGenPassword = string.Empty;
                    bool   saveQAerror    = false;
                    if (updateCode == null || updateCode == 0)
                    {
                        memberShipUser.Email      = saveUser.Email;
                        memberShipUser.IsApproved = saveUser.IsApproved;
                        Membership.UpdateUser(memberShipUser);

                        if (!string.IsNullOrEmpty(saveUser.PasswordQuestion) && !string.IsNullOrEmpty(saveUser.PasswordAnswer))
                        {
                            saveQAerror = !memberShipUser.ChangePasswordQuestionAndAnswer(saveUser.InputPassword, saveUser.PasswordQuestion, saveUser.PasswordAnswer);
                        }

                        if (saveUser.IsResetPassword)
                        {
                            if (simpleProvider != null)
                            {
                                MembershipUser simpleUser = simpleProvider.GetUser(saveUser.UserId, false);
                                if (simpleUser != null)
                                {
                                    if (saveUser.IsResetPassword)
                                    {
                                        newGenPassword = simpleUser.ResetPassword();
                                    }
                                }
                            }
                        }
                    }
                    saveUser = GetAspUser(saveUser.UserId);
                    saveUser.NewGenPassword = newGenPassword;
                    saveUser.IsSavedQAError = saveQAerror;
                }
            }

            return(saveUser);
        }