public async Task <IdentityResult> CreateAsync(EmployeeCreateDTO createModel) { if (createModel == null) { return(IdentityResult.Failed(new IdentityError { Code = string.Empty, Description = "Please fill in the required fields" })); } var user = new ApplicationUser { UserName = createModel.Email, Email = createModel.Email, Address = "", FirstName = createModel.FirstName, MiddleName = createModel.MiddleName, LastName = createModel.LastName, EmailConfirmed = true }; IEnumerable <string> staffRoles = await StaffRoles(); List <string> availableRoles = createModel.Roles?.Where(r => staffRoles.Contains(r, StringComparer.OrdinalIgnoreCase) ).ToList(); string randomPwd = _pwdGenerator.Next(); IdentityResult result = await _userManager.CreateAsync(user, randomPwd); if (!result.Succeeded) { return(IdentityResult.Failed(result.Errors.ToArray())); } await _emailSender.SendEmailAsync(user.Email, "Register at the market", "Your employee account password: " + randomPwd); if (availableRoles == null || !availableRoles.Any()) { return(result); } IdentityResult rolesResult = await _userManager .AddToRolesAsync(user, availableRoles); if (rolesResult.Succeeded) { return(result); } List <IdentityError> errors = result.Errors.ToList(); errors.AddRange(rolesResult.Errors); result = IdentityResult.Failed(errors.ToArray()); return(result); }
public async Task RegisterAccount(int count) { using (var dbContext = new DbContext()) { var accountService = new AccountDataService(dbContext); for (var i = 0; i < count; i++) { using (var dungeonCrawlApi = _dungeonCrawlApiFactory.Factory()) { dungeonCrawlApi.Proxy = new WebProxy(_proxyAddresses[i]); var name = await _nameGenerator.GenerateAsync(); var emailDomain = _emailDomainGenerator.Next().First(); var password = _passwordGenerator.Next().First(); var email = $"{name}@{emailDomain}"; await dungeonCrawlApi.ConnectAsync(_serverLabel.Url); await dungeonCrawlApi.RegisterAsync(name, password, email); accountService.Add(new DataBase.Account { Email = email, Name = name, Password = password }); } } } }