public async Task RegisterWalletAsync(DepositWalletKey key) { var client = _blockchainApiClientProvider.Get(key.BlockchainId); await _enrolledBalanceRepository.SetBalanceAsync(key, 0, 0); await client.StartBalanceObservationAsync(key.WalletAddress); }
public async Task SetBalanceAsync(DepositWalletKey key, BigInteger balance, long balanceBlock) { await _enrolledBalanceRepository.SetBalanceAsync(key, balance, balanceBlock); if (_memCache.TryGetValue(key, out EnrolledBalance value)) { value.Block = balanceBlock; value.Balance = balance; } else { using (var entry = _memCache.CreateEntry(key)) { entry.Value = EnrolledBalance.Create(key, balance, balanceBlock); } } }
public async Task <CommandHandlingResult> Handle(SetEnrolledBalanceCommand command, IEventPublisher publisher) { await _enrolledBalanceRepository.SetBalanceAsync ( new DepositWalletKey ( blockchainType : command.BlockchainType, blockchainAssetId : command.BlockchainAssetId, depositWalletAddress : command.DepositWalletAddress ), balance : command.EnrolledBalanceAmount + command.OperationAmount, balanceBlock : command.BalanceBlock ); publisher.PublishEvent(new EnrolledBalanceSetEvent { OperationId = command.OperationId }); return(CommandHandlingResult.Ok()); }