public Enums.PaymentFlow DetermineWinner(PlayerHand playerHand, IDealer dealer) { var dealerHandValue = dealer.GetDealerHandValue(); var isDealerHandBlackjack = dealer.IsHandBlackjack(); if ((playerHand.IsBlackJack && isDealerHandBlackjack) || (playerHand.HandTotal == dealerHandValue && !playerHand.IsBlackJack && isDealerHandBlackjack) || (playerHand.HandTotal > 21 && dealerHandValue > 21)) { return Enums.PaymentFlow.Push; } if (playerHand.IsBlackJack) { return Enums.PaymentFlow.PayBlackjack; } if (playerHand.HandTotal > 21 || (playerHand.HandTotal < dealerHandValue && dealerHandValue <= 21) || isDealerHandBlackjack) { return Enums.PaymentFlow.PayDealer; } return Enums.PaymentFlow.PayPlayer; }