public async Task <ActionResult <CountedCardResponse> > GetNextCountedCardAsync(string cardsLeftCSV, int currentCount, string cardsPlayedCSV)
        {
            (bool success, List <Card> cardsLeft, string badCard) = ParseCards(cardsLeftCSV);
            if (!success)
            {
                return(NotFound($"Bad Card in played cards: {badCard}"));
            }
            List <Card> cardsPlayed = null;

            if (cardsPlayedCSV != "")
            {
                (success, cardsPlayed, badCard) = ParseCards(cardsPlayedCSV);
                if (!success)
                {
                    return(NotFound($"Bad Card in played cards: {badCard}"));
                }
            }

            CountingPlayer player = new CountingPlayer(true);
            Card           toPlay = await player.GetCountCard(cardsPlayed, cardsLeft, currentCount);

            int score = CardScoring.ScoreCountingCardsPlayed(cardsPlayed, toPlay, currentCount, out List <Score> scoreList);

            return(new CountedCardResponse(toPlay, score, scoreList));
        }
        private async Task <GetRandomHandResponse> GetRandomHandAsync(int[] randomSequence, bool isComputerCrib)
        {
            List <Card> playerCards   = new List <Card>();
            List <Card> computerCards = new List <Card>();
            string      csv           = "";

            for (int i = 0; i < 6; i++)
            {
                Card card = _deck.Cards[randomSequence[i]];
                card.Owner = Owner.Player;
                playerCards.Add(card);
                csv += $"{randomSequence[i]},";
            }
            for (int i = 6; i < 12; i++)
            {
                Card card = _deck.Cards[randomSequence[i]];
                card.Owner = Owner.Computer;
                computerCards.Add(card);
                csv += $"{randomSequence[i]},";
            }
            CountingPlayer player = new CountingPlayer(true);
            List <Card>    crib   = await player.SelectCribCards(computerCards, isComputerCrib);

            Card sharedCard = _deck.Cards[randomSequence[12]];

            csv += $"{randomSequence[12]},";

            string repeatUrl = $"cribbage/getrandomhand/{isComputerCrib}/{csv}";

            return(new GetRandomHandResponse(playerCards, computerCards, crib, sharedCard, ((int)(sharedCard.Ordinal) == 11), repeatUrl));
        }
        public async Task <ActionResult <List <Card> > > GetCribCardsAsync(string handCSV, bool isMyCrib)
        {
            (bool success, List <Card> hand, string badCard) = ParseCards(handCSV);
            if (!success)
            {
                return(NotFound($"Bad Card in hand: {badCard}"));
            }

            if (hand.Count != 6)
            {
                return(BadRequest($"Wrong number of cards.  Need 6, got {hand.Count}"));
            }


            CountingPlayer player = new CountingPlayer(true);
            List <Card>    cards  = await player.SelectCribCards(hand, isMyCrib);

            return(cards);
        }