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(); }
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; } }