public override MembershipUser CreateUser(string username, string password,
                                                  string email, string passwordQuestion, string passwordAnswer,
                                                  bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            ValidatePasswordEventArgs args =
                new ValidatePasswordEventArgs(username, password, true);

            OnValidatingPassword(args);

            if (args.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return(null);
            }

            if (RequiresUniqueEmail && GetUserNameByEmail(email) != string.Empty)
            {
                status = MembershipCreateStatus.DuplicateEmail;
                return(null);
            }

            MembershipUser user = GetUser(username, true);

            if (user == null)
            {
                using (var context = new AccountServices())
                {
                    var newUserReg = new Registration()
                    {
                        ActivationCode = Guid.NewGuid(),
                        Username       = username,
                        PasswordByte   = EncodePasswordBytes(password),
                        FirstName      = _newUserFirstName,
                        LastName       = _newUserLastName,
                        Email          = email
                    };

                    context.CreateNewUser(newUserReg);
                }

                status = MembershipCreateStatus.Success;

                return(GetUser(username, true));
            }
            else
            {
                status = MembershipCreateStatus.DuplicateUserName;
            }

            return(null);
        }