public async Task <InsertResponse> GenerateUsersAsync(GenerateUserRequest request) { var address = Builder <Address> .CreateNew() .With(e => e.City = Faker.Address.USCity()) .With(e => e.Street = Faker.Address.StreetName()) .With(e => e.Country = Faker.Address.Country()); var users = new Faker <UserModel>() .RuleFor(u => u.Id, f => ObjectId.GenerateNewId().ToString()) .RuleFor(bp => bp.FirstName, f => f.Lorem.Word()) .RuleFor(bp => bp.LastName, f => f.Lorem.Word()) .RuleFor(bp => bp.BirthDate, f => f.Date.Between(new DateTime(1930, 1, 1), DateTime.UtcNow)) .RuleFor(u => u.Gender, f => f.PickRandom <GenderType>()) .RuleFor(u => u.Type, f => f.PickRandom <UserType>()) .RuleFor(bp => bp.Phone, f => f.Phone.PhoneNumber()) .RuleFor(bp => bp.Email, f => f.Internet.Email()) .RuleFor(u => u.Address, f => address.Build()) .RuleFor(u => u.Email, (f, u) => f.Internet.Email(u.FirstName + f.Random.Number(1, 1000), u.LastName + f.Random.Number(1, 1000))) .Generate(request.Count).ToList(); return(await UserRepository.BulkInsertUsersAsync(users)); }
public async Task <IActionResult> Insert([FromBody] GenerateUserRequest request) { return(Ok(await UserManager.GenerateUsersAsync(request))); }
public async Task <ActionResult> GenerateUser( [FromBody] GenerateUserRequest model, [FromServices] ApplicationDbContext dbContext) { var createUserResult = await CreateUser(new CreateUserDataModel { StudentID = model.ID, Email = $"{model.ID}@{options.Value.EmailDomain}", FirstName = model.Name, Password = model.Password, LastName = "" }); if (createUserResult.IsT1) { var(statusCode, value) = createUserResult.AsT1; if (statusCode == 400 && value is ModelStateDictionary modelState) { return(BadRequest(modelState)); } return(StatusCode(statusCode, value)); } if (model.Claims is null) { return(Ok()); } var user = createUserResult.AsT0; foreach (var challengeId in model .Claims.Where(c => c.Type == DefaultClaims.AddToChallenge.Type) .Select(c => c.Value) .Select(c => (success: Guid.TryParse(c, out var id), id)) .Where(c => c.success) .Select(c => c.id)) { try { dbContext.Add(new UserToChallenge { ChallengeId = challengeId, UserId = user.Id }); await dbContext.SaveChangesAsync(); } catch (Exception ex) { logger.LogWarning(ex, "Can't add user {user} to challenge {challenge}", user.Id, challengeId); } } foreach (var claim in model.Claims) { var claimToAdd = new Claim(claim.Type, claim.Value); var result = await UserManager.AddClaimAsync(user, claimToAdd); if (!result.Succeeded) { logger.LogError($"Can't add claim {claimToAdd} to user {user.Id} {user.StudentID}: {result}"); return(StatusCode(500, "Unexpected error")); } } return(Ok()); }