public IActionResult StoreNumbers(string storeId, string cryptoCode)
        {
            var store = HttpContext.GetStoreData();

            if (store == null)
            {
                return(NotFound());
            }

            var vm = new StoreNumbersViewModel {
                Store = store, CryptoCode = cryptoCode
            };

            return(ViewComponent("StoreNumbers", new { vm }));
        }
Ejemplo n.º 2
0
    public async Task <IViewComponentResult> InvokeAsync(StoreNumbersViewModel vm)
    {
        if (vm.Store == null)
        {
            throw new ArgumentNullException(nameof(vm.Store));
        }
        if (vm.CryptoCode == null)
        {
            throw new ArgumentNullException(nameof(vm.CryptoCode));
        }

        vm.WalletId = new WalletId(vm.Store.Id, vm.CryptoCode);

        if (vm.InitialRendering)
        {
            return(View(vm));
        }

        await using var ctx = _dbContextFactory.CreateContext();
        var payoutsCount = await ctx.Payouts
                           .Where(p => p.PullPaymentData.StoreId == vm.Store.Id && !p.PullPaymentData.Archived && p.State == PayoutState.AwaitingApproval)
                           .CountAsync();

        var refundsCount = await ctx.Invoices
                           .Where(i => i.StoreData.Id == vm.Store.Id && !i.Archived && i.CurrentRefundId != null)
                           .CountAsync();

        var derivation        = vm.Store.GetDerivationSchemeSettings(_networkProvider, vm.CryptoCode);
        int?transactionsCount = null;

        if (derivation != null && _nbxConnectionFactory.Available)
        {
            await using var conn = await _nbxConnectionFactory.OpenConnection();

            var wid       = NBXplorer.Client.DBUtils.nbxv1_get_wallet_id(derivation.Network.CryptoCode, derivation.AccountDerivation.ToString());
            var afterDate = DateTimeOffset.UtcNow - TimeSpan.FromDays(vm.TransactionDays);
            var count     = await conn.ExecuteScalarAsync <long>("SELECT COUNT(*) FROM wallets_history WHERE code=@code AND wallet_id=@wid AND seen_at > @afterDate", new { code = derivation.Network.CryptoCode, wid, afterDate });

            transactionsCount = (int)count;
        }

        vm.PayoutsPending = payoutsCount;
        vm.Transactions   = transactionsCount;
        vm.RefundsIssued  = refundsCount;

        return(View(vm));
    }
Ejemplo n.º 3
0
    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));
    }