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()
            });
        }