/// <summary>
        ///     Get the game result.  This returns an EndResult value
        /// </summary>
        /// <returns></returns>
        public EndResult GetHandResult(Hand playerHand)
        {
            EndResult endState;
            var dealerHand = Dealer.Hands[0];

            // Check for blackjack
            if (playerHand.NumCards == 2 && playerHand.HasBlackJack() && dealerHand.NumCards == 2 &&
                dealerHand.HasBlackJack())
            {
                endState = EndResult.Push;
                playerHand.Push();
            }
            else if (playerHand.NumCards == 2 && playerHand.HasBlackJack())
            {
                endState = EndResult.PlayerBlackJack;
                playerHand.WinBlackjack();
            }
            else if (dealerHand.NumCards == 2 && dealerHand.HasBlackJack())
            {
                endState = EndResult.DealerBlackJack;
                playerHand.Lose();
            }
                // Check if the dealer has bust
            else if (dealerHand.HasBust())
            {
                endState = EndResult.DealerBust;
                playerHand.Win();
            }
            else if (dealerHand.CompareFaceValue(playerHand) > 0)
            {
                //dealer wins
                endState = EndResult.DealerWin;
                playerHand.Lose();
            }
            else if (dealerHand.CompareFaceValue(playerHand) == 0)
            {
                // push
                endState = EndResult.Push;
                playerHand.Push();
            }
                // Check if the dealer has bust
            else if (playerHand.HasBust())
            {
                endState = EndResult.PlayerBust;
                playerHand.Lose();
            }
            else
            {
                // player wins
                endState = EndResult.PlayerWin;
                playerHand.Win();
            }
            return endState;
        }