private async Task TrySaveGameHistory <T>(RequestContext <T> requestContext, GameResult result) { if (requestContext.UserSession.IsFunPlay) { return; } var userGameKey = requestContext.UserGameKey; try { // Don't save any transaction within Insufficient exception and any wallet access exception. if (result == null || result.ErrorCode == ErrorCode.InsufficientCredit) { return; } if (result.ErrorSource == ErrorSource.Wallet) { // log game history to log file logger.LogWarning($"[Got error from wallet] SessionKey<{requestContext.SessionKey}> UserId<{userGameKey.UserId}> GameId<{userGameKey.GameId}> Transaction<{result.TransactionId}>"); logger.LogWarning(JsonHelper.FullString(result)); return; } await gameHistoryService.Save(userGameKey, result); } catch (Exception ex) { logger.LogError($"[FAULT SAVE GAMEHISTORY] SessionKey<{requestContext.SessionKey}> UserId<{userGameKey.UserId}> GameId<{userGameKey.GameId}> Transaction<{result.TransactionId}>"); logger.LogError(JsonHelper.FullString(result)); logger.LogError(ex, ex.Message); } }
public GameResult PlayGame(int playerCount) { var gameResult = _playingService.PlayGame(playerCount); _historyService.Save(gameResult); return(gameResult); }