public DataResultUserCreateResult CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, string activateFormVirtualPath) { DataResultUserCreateResult result; EmailAttribute emailDataAnnotations = new EmailAttribute(); if (!emailDataAnnotations.IsValid(email)) { //result = new DataResultUserCreateResult(new CreatedAccountResultModel(MembershipCreateStatus.InvalidEmail)); result = new DataResultUserCreateResult() { IsValid = true, MessageType = DataResultMessageType.Error, Data = new CreatedAccountResultModel(MembershipCreateStatus.InvalidEmail) }; } else { if (this.ValidatePasswordStrength(password)) { using (TransactionScope trans = this.TransactionScopeCreate()) { result = this._dal.CreateUser(username, password, email, passwordQuestion, passwordAnswer, activateFormVirtualPath); if (result.Data.CreateStatus == MembershipCreateStatus.Success) { MembershipUserWrapper newUser = _dal.GetUserByName(username, false).Data; IRoleAdminBL _roleBl = new RoleAdminBL(); DataResultBoolean newUserRole = _roleBl.AddToRoles(newUser.UserName, new string[1] { SiteRoles.Guest.ToString() }); _roleBl.Dispose(); ProfileBL _profileBL = new ProfileBL(); UserProfileModel usrProfile = _profileBL.Create(username).Data; _profileBL.Dispose(); ITokenTemporaryPersistenceBL<MembershipUserWrapper> _tokenServices = new TokenTemporaryPersistenceBL<MembershipUserWrapper>(); TokenTemporaryPersistenceServiceItem<MembershipUserWrapper> token = new TokenTemporaryPersistenceServiceItem<MembershipUserWrapper>(newUser); _tokenServices.Insert(token); result.Data.ActivateUserToken = token.Token; _tokenServices.Dispose(); if (newUserRole.Data) { MailMessage mail = new MailMessage(); mail.From = new MailAddress(ApplicationConfiguration.MailingSettingsSection.SupportTeamEmailAddress); mail.Bcc.Add(new MailAddress(newUser.Email)); mail.Subject = string.Format(AccountResources.CreateNewAccount_EmailSubject, ApplicationConfiguration.DomainInfoSettingsSection.DomainName); mail.Body = string.Format(AccountResources.CreateNewAccount_EmailBody, ApplicationConfiguration.DomainInfoSettingsSection.DomainName, new Uri(string.Format("{0}://{1}{2}/{3}", ApplicationConfiguration.DomainInfoSettingsSection.SecurityProtocol, ApplicationConfiguration.DomainInfoSettingsSection.DomainName, activateFormVirtualPath.ToString(), result.Data.ActivateUserToken))); using (ISmtpClient smtp = DependencyFactory.Resolve<ISmtpClient>()) { smtp.Send(mail); } trans.Complete(); } else { trans.Dispose(); } } else { trans.Dispose(); } } } else { result = new DataResultUserCreateResult() { IsValid = true, MessageType = DataResultMessageType.Error, Data = new CreatedAccountResultModel(MembershipCreateStatus.InvalidPassword) }; } } return result; }