示例#1
0
        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));
        }
示例#2
0
 public Task AddAsync(PaymentClaim paymentClaim)
 => PaymentClaims.InsertOneAsync(paymentClaim);
示例#3
0
 public Task <PaymentClaim> GetAsync(Keccak id)
 => PaymentClaims.Find(c => c.Id == id).SingleOrDefaultAsync();
示例#4
0
 public Task UpdateAsync(PaymentClaim paymentClaim)
 => PaymentClaims.ReplaceOneAsync(c => c.Id == paymentClaim.Id, paymentClaim);