public async Task <IViewComponentResult> InvokeAsync(StoreData store) { await using var ctx = _dbContextFactory.CreateContext(); var payoutsCount = await ctx.Payouts .Where(p => p.PullPaymentData.StoreId == store.Id && !p.PullPaymentData.Archived && p.State == PayoutState.AwaitingApproval) .CountAsync(); var refundsCount = await ctx.Invoices .Where(i => i.StoreData.Id == store.Id && !i.Archived && i.CurrentRefundId != null) .CountAsync(); var walletId = new WalletId(store.Id, CryptoCode); var derivation = store.GetDerivationSchemeSettings(_networkProvider, walletId.CryptoCode); var transactionsCount = 0; if (derivation != null) { var network = derivation.Network; var wallet = _walletProvider.GetWallet(network); var allTransactions = await wallet.FetchTransactions(derivation.AccountDerivation); var afterDate = DateTimeOffset.UtcNow - TimeSpan.FromDays(TransactionDays); transactionsCount = allTransactions.UnconfirmedTransactions.Transactions .Concat(allTransactions.ConfirmedTransactions.Transactions) .Count(t => t.Timestamp > afterDate); } var vm = new StoreNumbersViewModel { Store = store, WalletId = walletId, PayoutsPending = payoutsCount, Transactions = transactionsCount, TransactionDays = TransactionDays, RefundsIssued = refundsCount }; return(View(vm)); }