public async Task <ResponseGameViewModel> CreateNewGame() { RequestGameViewModel request = new RequestGameViewModel { botQuantity = 3, roundQuantity = 5, User = new ViewModelsLayer.ViewModels.UserViewModels.RequestUserViewModel { Nickname = "ass228" } }; return(await service.CreateNewGame(request)); }
public async Task <ResponseGameViewModel> CreateNewGame(RequestGameViewModel request) { var game = new Game(); var cards = await _cardRepository.Get(); cards = this.Reshuffle(cards.ToList()); var userGames = new List <UserGames>(); var bots = new List <User>(); var peoplePlayer = await _userRepository.Get(request.User.Nickname); var dealer = await _userRepository.Get("Dealer"); game.RoundQuantity = request.roundQuantity; await _gameRepository.Create(game); if (request.botQuantity >= 0 && request.botQuantity <= 5) { for (int i = 0; i < request.botQuantity; i++) { var bot = new User { Nickname = "Bot#" + (i + 1), UserRole = UserRole.BotPlayer }; bots.Add(bot); _handCardsProvider.Add(new HandCards { Cards = new List <Card>(), User = bot }); } } if (dealer != null && peoplePlayer != null) { _handCardsProvider.Add(new HandCards { Cards = new List <Card>(), User = peoplePlayer }); _handCardsProvider.Add(new HandCards { Cards = new List <Card>(), User = dealer }); } if (dealer == null && peoplePlayer == null) { peoplePlayer = new User { Nickname = request.User.Nickname, UserRole = UserRole.PeoplePlayer }; dealer = new User { Nickname = "Dealer", UserRole = UserRole.Dealer }; await _userRepository.CreateRange(new List <User> { peoplePlayer, dealer }); _handCardsProvider.Add(new HandCards { Cards = new List <Card>(), User = peoplePlayer }); } await _userRepository.CreateRange(bots); for (int i = 0; i < bots.Count; i++) { userGames.Add(new UserGames { GameId = game.Id, UserId = bots[i].Id }); } userGames.Add(new UserGames { GameId = game.Id, UserId = peoplePlayer.Id }); userGames.Add(new UserGames { GameId = game.Id, UserId = dealer.Id }); await _userGamesRepository.CreateRange(userGames); _deckProvider.Add(new Deck { Cards = cards.ToList(), DiscardPile = new List <Card>() }); await CreateNewRound(game.Id); ResponseGameViewModel result = await GameResponse(game.Id); return(result); }