public static int? CreateRank(RequestStructure.GameState gameState,Hand hand)
        {
            var isFirstRound = !gameState.CommunityCards.Any();

            if (isFirstRound)
            {
                return (int)((FirstRound(gameState)) * 1.3);
            }

                return (int)hand;

            return null;
        }
        private static int FirstRound(RequestStructure.GameState gameState)
        {
            var cards = gameState.OurPlayer.HoleCards;

            var firstCard = cards.First();
            var secondCard = cards.Last();

            var firstCardRank = firstCard.Rank;
            var secondCardRank = secondCard.Rank;

            var firstCardSuit = firstCard.Suit;
            var secondCardSuit = secondCard.Suit;

            var numberRank = 0;
            if (int.TryParse(firstCardRank, out numberRank))
            {
                firstCardRank = ((NumberToString)numberRank).ToString();
            }
            if (int.TryParse(secondCardRank, out numberRank))
            {
                secondCardRank = ((NumberToString)numberRank).ToString();
            }

            var isPair = firstCardRank == secondCardRank;
            var areSameSuit = firstCardSuit == secondCardSuit;

            var rank = firstCardRank + secondCardRank;
            rank = isPair ? rank : rank + (areSameSuit ? "s" : "o");

            var rankValue = 0;

            try
            {
                rankValue = (int)Enum.Parse(typeof(StartingHandRanking), rank);
            }
            catch (Exception ex)
            {
                rank = secondCardRank + firstCardRank;
                rank = isPair ? rank : rank + (areSameSuit ? "s" : "o");
                rankValue = (int)Enum.Parse(typeof(StartingHandRanking), rank);
            }

            return rankValue;
        }
 public static Hand CheckCardsOnHand(RequestStructure.GameState gameState)
 {
     var cards = gameState.OurCards.Concat(gameState.CommunityCards).ToList();
     return CheckCardsOnHand(cards);
 }
        private static int GetCurrentPosition(RequestStructure.GameState game)
        {
            var activePlayerCount = GetActivePlayerCount(game);
            var dealerId = Convert.ToInt32(game.Dealer);
            if (game.OurPlayer.Id == dealerId)
            {
                return activePlayerCount;
            }
            if (game.OurPlayer.Id < dealerId)
            {
                var tmpPosition = activePlayerCount;
                for (int i = dealerId - 1; i != game.OurPlayer.Id && i > 0; i--)
                {
                    if (i == game.OurPlayer.Id) return tmpPosition;
                    if (game.Players[i].Status == RequestStructure.PlayerStatus.Active) tmpPosition -= 1;
                }
                return tmpPosition;
            }
            else
            {

                var tmpPosition = 1;
                for (int i = dealerId + 1; i < game.Players.Count; i++)
                {
                    if(i == game.OurPlayer.Id) return tmpPosition;
                    if (game.Players[i].Status == RequestStructure.PlayerStatus.Active) tmpPosition += 1;
                }
                return tmpPosition;
            }
        }
 private static int GetAllInPlayersCount(RequestStructure.GameState game)
 {
     return game.Players.Count(p => p.Stack == p.Bet);
 }
 private static int GetActivePlayerCount(RequestStructure.GameState game)
 {
     return game.Players.Count(p => p.Status == RequestStructure.PlayerStatus.Active);
 }
 private static int GetMaxBet(RequestStructure.GameState game)
 {
     var maxBet = game.Players.Max(p => (int) p.Bet);
     return maxBet;
 }