Пример #1
0
        public async Task SaveBlackjackGameResult(BlackjackGameResult result)
        {
            var winnerIds        = result.Winners.Select(us => us.UserId);
            var allUserInGameIds = result.AllUsers.Select(us => us.UserId);
            var allUsers         = _blackjackGameContext.Users.Where(u => allUserInGameIds.Contains(u.UserId));
            var gameResult       = new GameResult()
            {
                GameResultId = Guid.NewGuid().ToString(),
                WinnerScore  = result.Sum
            };

            allUsers.ToList().ForEach(user =>
            {
                var userGameResult = new UserGameResult
                {
                    User       = user,
                    GameResult = gameResult,
                    IsWinner   = winnerIds.Contains(user.UserId)
                };
                if (user.UserGameResults == null)
                {
                    user.UserGameResults = new Collection <UserGameResult>();
                }
                user.UserGameResults.Add(userGameResult);
            });
            _blackjackGameContext.GameResults.Add(gameResult);
            await _blackjackGameContext.SaveChangesAsync();
        }
Пример #2
0
        public void UpdateResult(UserGameResult userGameResult)
        {
            if (userGameResult == null)
            {
                throw new ArgumentException("userGameResult is null");
            }

            if (userGameResult.UserGameSelectionId != UserGameSelectionId && userGameResult.UserGameSelection.UserId != UserId)
            {
                throw new ArgumentException(string.Format("The userGameResult.UserGameSelectionId ({0}) does not match UserGameSelectionId ({1}) and/or userGameResult.UserGameSelection.UserId ({2}) does not match UserId ({3})", userGameResult.UserGameSelectionId, UserGameSelectionId, userGameResult.UserGameSelection.UserId, UserId));
            }
            else
            {
                Result        = userGameResult.BetPoints;
                PotentialLoss = 0;
                PotentialGain = 0;
            }
        }