public async Task <ConsumersReport> GetConsumersReportAsync(GetConsumersReport query)
        {
            var consumers = await _consumerRepository.BrowseAsync(new GetConsumers
            {
                Results = int.MaxValue
            });

            if (!consumers.Items.Any())
            {
                return(ConsumersReport.Empty);
            }

            var paymentClaims = await _paymentClaimRepository.BrowseAsync(new GetPaymentClaims
            {
                Page      = 1,
                Results   = int.MaxValue,
                DepositId = query.DepositId,
                AssetId   = query.AssetId,
                Consumer  = query.Consumer
            });

            var depositsPaymentClaimGroups = paymentClaims.Items.GroupBy(c => c.DepositId).Where(c => c.Any());
            var page = query.Page;

            if (page <= 0)
            {
                page = 1;
            }

            var results = query.Results;

            if (results <= 0)
            {
                results = 10;
            }

            var skip  = (page - 1) * results;
            var items = (from depositsPaymentClaimsGroup in depositsPaymentClaimGroups.Skip(skip).Take(results)
                         let consumer = consumers.Items.FirstOrDefault(c => c.DepositId == depositsPaymentClaimsGroup.Key)
                                        where !(consumer is null)
                                        let payments = CalculatePayments(depositsPaymentClaimsGroup)
                                                       select new ConsumerReportItem(consumer.DataAsset.Id, consumer.DataAsset.Name,
                                                                                     consumer.DataRequest.Consumer, consumer.DepositId, consumer.DataRequest.Value, payments.Claimed,
                                                                                     payments.Pending, payments.Income)).ToList();

            var totalResults    = items.Count();
            var totalPages      = (int)Math.Ceiling((double)totalResults / query.Results);
            var paymentsSummary = await _paymentClaimRepository.GetPaymentsSummary(assetId : query.AssetId,
                                                                                   consumer : query.Consumer);

            return(new ConsumersReport(paymentsSummary.Claimed, paymentsSummary.Pending, paymentsSummary.Income,
                                       PagedResult <ConsumerReportItem> .Create(items, query.Page, query.Results, totalPages, totalResults)));
        }