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); }
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); }