async Task AddResourcesToWalletAsync(ResourceWalletDto wallet, double count) { var tran = new ResourceWalletTransactionDto { GameId = wallet.GameId, ResourceId = wallet.ResourceId, ResourceCount = count }; await m_walletTransactionService.AddOrUpdateAsync(tran); }
void CreateWallets(GameDto game) { var resources = m_resourceService.GetAll(); foreach (var resource in resources) { var wallet = new ResourceWalletDto { GameId = game.GameId, ResourceId = resource.ResourceId }; m_walletService.AddOrUpdate(wallet); } }
/// <summary> /// Send the resources from the wallet to another one asynchronously. /// </summary> public static async Task SendResourcesAsync ( this IGenericService <ResourceWalletTransaction, ResourceWalletTransactionDto, int> service, ResourceWalletDto sourceWallet, ResourceWalletDto destWallet, double amountToWithdrawFromSourceWallet, double amountToSendToDestWallet ) { // Check source wallet balance. double?sourceWalletBalance = await service.CallSfGetWalletBalanceAsync(sourceWallet.GameId, sourceWallet.ResourceId); if (sourceWalletBalance == null || sourceWalletBalance < amountToWithdrawFromSourceWallet) { throw new InvalidOperationException("Not enough resources on the source wallet"); } // Withdraw recources from source wallet. var withdrawTran = new ResourceWalletTransactionDto { GameId = sourceWallet.GameId, ResourceId = sourceWallet.ResourceId, ResourceCount = -amountToWithdrawFromSourceWallet }; await service.AddOrUpdateAsync(withdrawTran); // Add resources to the destination wallet. var addTran = new ResourceWalletTransactionDto { GameId = destWallet.GameId, ResourceId = destWallet.ResourceId, ResourceCount = +amountToSendToDestWallet }; await service.AddOrUpdateAsync(addTran); }