public async Task <PagedResult <DepositApproval> > BrowseAsync(GetProviderDepositApprovals query)
        {
            if (query is null)
            {
                return(PagedResult <DepositApproval> .Empty);
            }

            var depositApprovals = DepositApprovals.AsQueryable();

            if (!(query.DataAssetId is null))
            {
                depositApprovals = depositApprovals.Where(a => a.AssetId == query.DataAssetId);
            }

            if (!(query.Consumer is null))
            {
                depositApprovals = depositApprovals.Where(a => a.Consumer == query.Consumer);
            }

            if (query.OnlyPending)
            {
                depositApprovals = depositApprovals.Where(a => a.State == DepositApprovalState.Pending);
            }

            return(await depositApprovals.OrderByDescending(a => a.Timestamp).PaginateAsync(query));
        }
Exemple #2
0
        public async Task Can_browse_with_query_and_pagination()
        {
            IMongoDatabase  database        = MongoForTest.Provider.GetDatabase();
            var             repo            = new ProviderDepositApprovalMongoRepository(database);
            DepositApproval depositApproval = BuildDummyDepositApproval();
            await repo.AddAsync(depositApproval);

            GetProviderDepositApprovals query = new GetProviderDepositApprovals();

            query.Consumer    = depositApproval.Consumer;
            query.OnlyPending = true;
            query.DataAssetId = depositApproval.AssetId;
            query.Page        = 0;
            query.Results     = 10;
            await repo.BrowseAsync(query);
        }
        public Task <PagedResult <DepositApproval> > BrowseAsync(GetProviderDepositApprovals query)
        {
            if (query is null)
            {
                return(Task.FromResult(PagedResult <DepositApproval> .Empty));
            }

            var depositApprovalsBytes = _database.GetAllValues().ToArray();

            if (depositApprovalsBytes.Length == 0)
            {
                return(Task.FromResult(PagedResult <DepositApproval> .Empty));
            }

            var depositApprovals = new DepositApproval[depositApprovalsBytes.Length];

            for (var i = 0; i < depositApprovalsBytes.Length; i++)
            {
                depositApprovals[i] = Decode(depositApprovalsBytes[i]);
            }

            var filteredDepositApprovals = depositApprovals.AsEnumerable();

            if (!(query.DataAssetId is null))
            {
                filteredDepositApprovals = filteredDepositApprovals.Where(a => a.AssetId == query.DataAssetId);
            }

            if (!(query.Consumer is null))
            {
                filteredDepositApprovals = filteredDepositApprovals.Where(a => a.Consumer == query.Consumer);
            }

            if (query.OnlyPending)
            {
                filteredDepositApprovals = filteredDepositApprovals.Where(a => a.State == DepositApprovalState.Pending);
            }

            return(Task.FromResult(filteredDepositApprovals.OrderByDescending(a => a.Timestamp).ToArray().Paginate(query)));
        }