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