public async Task <IActionResult> Post([FromBody] AddUsersRequestModel request, CancellationToken cancellationToken = default) { _logger.LogTrace($"{nameof(AddUsersController)}.{nameof(Post)} hit"); var errors = request.Validate(); if (errors.Any()) { return(BadRequest(errors)); } var response = await _command.ExecuteAsync(request, cancellationToken); return(Ok(response)); }
public async Task <AddUsersResponseModel> ExecuteAsync(AddUsersRequestModel request, CancellationToken cancellationToken = default) { var usernames = request.Users.Select(user => user.UserName); _logger.LogInformation("Checking if users already exist"); var anyUsersExist = _userRepository.GetAll().Any(user => usernames.Contains(user.UserName)); if (anyUsersExist) { _logger.LogInformation("Users already exist"); return(new AddUsersResponseModel { Success = false }); } var newUsers = request.Users.Select(userRequest => new User { UserName = userRequest.UserName }); _logger.LogInformation("Adding users"); await _userRepository.AddRangeAsync(newUsers, cancellationToken); _logger.LogInformation("Saving changes to data store"); await _userRepository.SaveChangesAsync(cancellationToken); _logger.LogInformation("Getting users from database"); var databaseUsers = _userRepository.GetAll().Where(user => usernames.Contains(user.UserName)).ToList(); return(new AddUsersResponseModel { Success = true, Users = databaseUsers.Select(user => new UserResponseModel { Id = user.Id, UserName = user.UserName }).ToList() }); }