private async Task <BetCommandResponseTransaction> SettleBet(BetCommandTransactionRequest transaction, Func <GameActionData, GameActionContext, Task <Guid> > settleMethod, string batchId = null) { var isDuplicate = 0; Guid gameActionId; try { var actionData = new GameActionData { RoundId = transaction.RoundId, ExternalTransactionId = transaction.Id, TransactionReferenceId = transaction.ReferenceId, Amount = transaction.Amount, CurrencyCode = transaction.CurrencyCode, Description = transaction.Description, BatchId = batchId, ExternalGameId = transaction.GameId }; gameActionId = await settleMethod(actionData, Context); } catch (DuplicateGameActionException ex) { gameActionId = ex.GameActionId; isDuplicate = 1; } return(new BetCommandResponseTransaction { GameActionId = gameActionId, Id = transaction.Id, IsDuplicate = isDuplicate }); }
private async Task <BetCommandResponseTransaction> PlaceBet(Guid playerId, BetCommandTransactionRequest transaction) { var isDuplicate = 0; Guid gameActionId; ValidateAccountFrozenStatus(playerId); try { gameActionId = await _gameCommands.PlaceBetAsync( new GameActionData { RoundId = transaction.RoundId, ExternalGameId = transaction.GameId, ExternalTransactionId = transaction.Id, Amount = transaction.Amount, CurrencyCode = transaction.CurrencyCode, Description = transaction.Description, }, Context, playerId); } catch (DuplicateGameActionException ex) { gameActionId = ex.GameActionId; isDuplicate = 1; } return(new BetCommandResponseTransaction { GameActionId = gameActionId, Id = transaction.Id, IsDuplicate = isDuplicate }); }