Пример #1
0
        public TransactionViewModel(Wallet wallet, WalletTransaction transaction, BlockIdentity transactionLocation)
        {
            _transaction = transaction;
            _location    = transactionLocation;

            var groupedOutputs = _transaction.NonChangeOutputs.Select(o =>
            {
                var destination = wallet.OutputDestination(o);
                return(new GroupedOutput(o.Amount, destination));
            }).Aggregate(new List <GroupedOutput>(), (items, next) =>
            {
                var item = items.Find(a => a.Destination == next.Destination);
                if (item == null)
                {
                    items.Add(next);
                }
                else
                {
                    item.Amount += next.Amount;
                }

                return(items);
            });

            Confirmations  = BlockChain.Confirmations(wallet.ChainTip.Height, transactionLocation);
            Inputs         = _transaction.Inputs.Select(input => new Input(-input.Amount, wallet.AccountName(input.PreviousAccount))).ToArray();
            Outputs        = _transaction.Outputs.Select(output => new Output(output.Amount, wallet.OutputDestination(output))).ToArray();
            GroupedOutputs = groupedOutputs;
        }