예제 #1
0
        public UserHandDto GetUserCards(UserCardViewModel userCardVm)
        {
            var cardsInHand = new UserHandDto();
            var whiteCards  = GetWhiteCards(userCardVm.userId, userCardVm.gameId);

            if (whiteCards.Any())
            {
                cardsInHand.whiteCards = whiteCards;
                cardsInHand.blackCard  = GetBlackCard(userCardVm.gameId);
                return(cardsInHand);
            }

            var takenCards = GetTakenCards(userCardVm.gameId)
                             .IgnoreQueryFilters()
                             .Select(userCard => userCard.CardId)
                             .ToList();

            cardsInHand.whiteCards = GetNewWhiteCards(takenCards, userCardVm.gameId, userCardVm.userId);

            if (IsUserTurn(userCardVm.userId, userCardVm.gameId))
            {
                cardsInHand.blackCard = GetNewBlackCard(userCardVm, takenCards);
            }
            else
            {
                cardsInHand.blackCard = GetBlackCard(userCardVm.gameId);
            }

            return(cardsInHand);
        }
예제 #2
0
        public UserHandDto SetupNextRound(UserCardViewModel userCardVm)
        {
            var nextRoundBlackCard = new UserHandDto();

            var result = SoftDeleteUserCards(userCardVm);

            if (result < 0)
            {
                return(nextRoundBlackCard);
            }

            var gameUsers = _context.GameUsers.Where(gUser => gUser.GameId == userCardVm.gameId)
                            .Include(gUser => gUser.User)
                            .OrderBy(gUser => gUser.User.Email)
                            .ToList();

            var turnIdx = gameUsers.FindIndex(gUser => gUser.IsTurn);

            gameUsers[turnIdx].IsTurn = false;
            _context.SaveChanges();
            turnIdx = turnIdx == gameUsers.Count() - 1 ? 0 : ++turnIdx;
            gameUsers[turnIdx].IsTurn = true;
            _context.SaveChanges();

            userCardVm.userId = gameUsers[turnIdx].UserId;
            var takenBlackCards = GetTakenCards(userCardVm.gameId)
                                  .IgnoreQueryFilters()
                                  .Include(uCard => uCard.Card)
                                  .Where(uCard => uCard.Card.TypeId == GetBlackType().Id)
                                  .Select(userCard => userCard.CardId)
                                  .ToList();

            nextRoundBlackCard.blackCard = GetNewBlackCard(userCardVm, takenBlackCards);

            return(nextRoundBlackCard);
        }