private async Task CreateBots(int gameId, CreateNewGameGameView createNewGameGameView) { List <Player> bots = await _playerRepository.GetAllFreeBots(createNewGameGameView.CountBots); int countBots = bots.Count; if (createNewGameGameView.CountBots <= countBots) { var playerGames = new List <PlayerGame>(); for (int i = 0; i < createNewGameGameView.CountBots; i++) { var playerGame = new PlayerGame(); playerGame.GameId = gameId; playerGame.PlayerId = bots[i].Id; playerGames.Add(playerGame); } await _playerGameRepository.CreateMultiple(playerGames); } if (createNewGameGameView.CountBots > countBots) { var playerGames = new List <PlayerGame>(); int difference = createNewGameGameView.CountBots - countBots; for (int i = 0; i < countBots; i++) { var playerGame = new PlayerGame(); playerGame.GameId = gameId; playerGame.PlayerId = bots[i].Id; playerGames.Add(playerGame); } List <string> names = Enum.GetNames(typeof(BotName)).ToList(); var random = new Random(); var listBots = new List <Player>(); for (int i = 0; i < difference; i++) { string nickName = names[random.Next(GameConstants.FIRST_ELEMENT_IN_BOTS_NAME_ENUM, names.Count)]; var bot = new Player(); bot.NickName = nickName; bot.PlayerRole = PlayerRole.Bot; bot.Coins = GameConstants.BOTS_COINS; listBots.Add(bot); } await _playerRepository.CreateMultiplePlayersAndReturnTheirIds(listBots); foreach (Player bot in listBots) { var playerGame = new PlayerGame(); playerGame.GameId = gameId; playerGame.PlayerId = bot.Id; playerGames.Add(playerGame); } await _playerGameRepository.CreateMultiple(playerGames); } }