public async Task <IncomingInvoicesSource> GetIncomingAsync(
            string merchantId,
            IReadOnlyList <InvoiceStatus> statuses,
            Period period,
            string searchValue,
            int skip,
            int take)
        {
            IReadOnlyList <string> groupMerchants = await _merchantService.GetGroupMerchantsAsync(merchantId);

            var invoices = await _payInvoiceClient.GetByFilter(groupMerchants, new string[] { merchantId }, statuses.Select(x => x.ToString()), null, null, null, null);

            IReadOnlyList <IncomingInvoiceListItem> result =
                await FilterInboxAsync(invoices, merchantId, period, searchValue);

            var source = new IncomingInvoicesSource
            {
                Total          = result.Count,
                CountPerStatus = new Dictionary <InvoiceStatus, int>(),
                Items          = result.Skip(skip).Take(take).ToList(),
                BaseAsset      = await GetBaseAssetId(merchantId)
            };

            foreach (InvoiceStatus value in Enum.GetValues(typeof(InvoiceStatus)))
            {
                source.CountPerStatus[value] = result.Count(o => o.Status == value);
            }

            return(source);
        }
        public async Task <IActionResult> GetIncomingInvoices(
            string searchValue,
            Period period,
            List <InvoiceStatus> statuses,
            int skip,
            int take)
        {
            IncomingInvoicesSource source = await _invoiceService.GetIncomingAsync(
                User.GetMerchantId(),
                statuses,
                period,
                searchValue,
                skip,
                take);

            return(Json(new
            {
                List = new
                {
                    source.Total,
                    source.CountPerStatus,
                    source.Items
                },
                source.BaseAsset
            }));
        }