Example #1
0
        private async Task <AddressSummaryAdapter> GetAddressSummaryAsync(string address)
        {
            var defaultResult = new AddressSummaryAdapter(new AddressSummaryModel {
                Address = address
            });
            var operation = TableOperation.Retrieve <AddressSummaryAdapter>(defaultResult.PartitionKey, defaultResult.RowKey);
            var response  = await StorageClient.GetAddressTable().ExecuteAsync(operation).ConfigureAwait(false);

            return(response.Result as AddressSummaryAdapter ?? defaultResult);
        }
Example #2
0
        private static ICollection <ITaskAdapter> GetAddressAdapters(AddressSummaryAdapter summary, IEnumerator <AddressTransactionModel> transactions)
        {
            var result = new Collection <ITaskAdapter>();

            while (transactions.MoveNext())
            {
                var tx = transactions.Current;
                if (tx == null)
                {
                    break;
                }

                if (tx.TxType == TransactionType.CoinBase)
                {
                    summary.Received += tx.Value;
                    summary.Balance  += tx.Value;
                }
                else if (tx.TxType == TransactionType.CoinStake)
                {
                    summary.Received += tx.Value;
                    summary.Balance  += tx.Value;
                }
                else if (tx.Value > 0)
                {
                    summary.Received += tx.Value;
                    summary.Balance  += tx.Value;
                }
                else
                {
                    summary.Sent    -= tx.Value;
                    summary.Balance -= tx.Value;
                }

                summary.TxCount++;

                var adapter = new AddressTransactionAdapter(tx);

                if (result.FirstOrDefault(t => t.PartitionKey.Equals(adapter.Address.Partition()) && t.RowKey.Equals(adapter.RowKey)) is AddressTransactionAdapter existingAdapter)
                {
                    existingAdapter.Value     += adapter.Value;
                    existingAdapter.TxBalance += adapter.TxBalance;
                }
                else
                {
                    result.Add(adapter);
                }
            }

            return(result);
        }