public Task <PagedResult <Consumer> > BrowseAsync(GetConsumers?query) { if (query is null) { return(Task.FromResult(PagedResult <Consumer> .Empty)); } var consumersBytes = _database.GetAllValues().ToArray(); if (consumersBytes.Length == 0) { return(Task.FromResult(PagedResult <Consumer> .Empty)); } var consumers = new Consumer[consumersBytes.Length]; for (var i = 0; i < consumersBytes.Length; i++) { consumers[i] = Decode(consumersBytes[i]); } var filteredConsumers = consumers.AsEnumerable(); if (!(query.AssetId is null)) { filteredConsumers = filteredConsumers.Where(c => c.DataAsset.Id == query.AssetId); } if (!(query.Address is null)) { filteredConsumers = filteredConsumers.Where(c => c.DataRequest.Consumer == query.Address); } if (query.OnlyWithAvailableUnits) { filteredConsumers = filteredConsumers.Where(c => c.HasAvailableUnits == query.OnlyWithAvailableUnits); } return(Task.FromResult(filteredConsumers.OrderByDescending(c => c.VerificationTimestamp).ToArray().Paginate(query))); }