private IMongoQueryable <PaymentClaim> Query(Keccak?depositId = null, Keccak?assetId = null, Address?consumer = null, bool onlyUnclaimed = false, bool onlyPending = false) { var paymentClaims = PaymentClaims.AsQueryable(); if (!(depositId is null)) { paymentClaims = paymentClaims.Where(c => c.DepositId == depositId); } if (!(assetId is null)) { paymentClaims = paymentClaims.Where(c => c.AssetId == assetId); } if (!(consumer is null)) { paymentClaims = paymentClaims.Where(c => c.Consumer == consumer); } if (onlyUnclaimed) { paymentClaims = paymentClaims.Where(c => c.Status != PaymentClaimStatus.Claimed && c.Status != PaymentClaimStatus.ClaimedWithLoss); } if (onlyPending) { paymentClaims = paymentClaims.Where(c => c.Transaction != null && c.Transaction.State == TransactionState.Pending && c.Status == PaymentClaimStatus.Sent); } return(paymentClaims.OrderByDescending(c => c.Timestamp)); }
public Task AddAsync(PaymentClaim paymentClaim) => PaymentClaims.InsertOneAsync(paymentClaim);
public Task <PaymentClaim> GetAsync(Keccak id) => PaymentClaims.Find(c => c.Id == id).SingleOrDefaultAsync();
public Task UpdateAsync(PaymentClaim paymentClaim) => PaymentClaims.ReplaceOneAsync(c => c.Id == paymentClaim.Id, paymentClaim);