Exemple #1
0
        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());
        }