Пример #1
0
        public async Task <IHttpActionResult> Bet([FromBody] RequestBetGameView betViewModel)
        {
            try
            {
                var responseBetGameViewModel = new ResponseBetGameView();
                responseBetGameViewModel = await _gameService.PlaceBet(betViewModel);

                return(Ok(responseBetGameViewModel));
            }
            catch (Exception exception)
            {
                _logger.Error(exception.Message);
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message));
            }
        }
Пример #2
0
        public async Task <ResponseBetGameView> PlaceBet(RequestBetGameView requestBetGameView)
        {
            var         responseBetGameView = new ResponseBetGameView();
            var         gameViewItem        = new GameViewItem();
            long        humanId;
            int         humanBetValue;
            List <long> deck = await GetDeckInGame(requestBetGameView.GameId);

            List <long> playersId = await _playerInGameRepository.GetAllPlayersIdByGameId(requestBetGameView.GameId);

            if (requestBetGameView.BetValue <= 0)
            {
                throw new Exception(UserMessages.NoBetValue);
            }

            humanId = await _playerInGameRepository.GetHumanIdByGameId(requestBetGameView.GameId);

            await _cardInHandRepository.RemoveAllCardsByGameId(requestBetGameView.GameId);

            humanBetValue = await _playerInGameRepository.GetBetByPlayerId(humanId, requestBetGameView.GameId);

            if (humanBetValue != 0)
            {
                throw new Exception(UserMessages.AlreadyBet);
            }

            await _playerInGameRepository.UpdateBet(new List <long> {
                humanId
            }, requestBetGameView.GameId, requestBetGameView.BetValue);

            _logger.Log(LogHelper.GetEvent(humanId, requestBetGameView.GameId, UserMessages.PlayerPlaceBet(requestBetGameView.BetValue)));
            await UpdateBotsBetValue(requestBetGameView.GameId);

            foreach (var playerId in playersId)
            {
                deck = await AddCardToPlayerHand(playerId, deck, requestBetGameView.GameId);

                deck = await AddCardToPlayerHand(playerId, deck, requestBetGameView.GameId);
            }

            responseBetGameView = await GetResponseBetGameView(requestBetGameView.GameId);

            return(responseBetGameView);
        }
Пример #3
0
        private async Task <ResponseBetGameView> GetResponseBetGameView(long gameId)
        {
            var responseBetGameView = new ResponseBetGameView();
            var gameViewItem        = await GetGameViewItem(gameId);

            gameViewItem.Options = UserMessages.OptionDrawCard;

            if ((gameViewItem.Human.Hand.CardsInHandValue >= Constant.WinValue) ||
                (gameViewItem.Dealer.Hand.CardsInHandValue >= Constant.WinValue))
            {
                StandGameView standGameView = await Stand(gameId);

                gameViewItem = Mapper.Map <StandGameView, GameViewItem>(standGameView);
            }

            responseBetGameView = Mapper.Map <GameViewItem, ResponseBetGameView>(gameViewItem);

            return(responseBetGameView);
        }