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)); }
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))); }