示例#1
0
 public Task <IList <ITransaction> > GetTransactionsAsync(ITransactionFilter filter)
 {
     return(Task.Factory.StartNew <IList <ITransaction> >(() =>
     {
         return GetTransactions(filter);
     }));
 }
示例#2
0
 public FilterContainer(
     ITransactionFilter transactionFilter,
     ITransactionReceiptFilter transactionReceiptFilter,
     ITransactionAndReceiptFilter transactionAndReceiptFilter)
     : this(null, transactionFilter, transactionReceiptFilter, transactionAndReceiptFilter)
 {
 }
        public void should_not_accept_any_transaction_when_using_reject_all_filter()
        {
            _filter = new RejectAllTransactionFilter();
            var transactions      = GetTransactions();
            var addedTransactions = ApplyFilter(transactions);

            addedTransactions.Should().BeEmpty();
        }
        public void should_accept_any_transaction_when_using_accept_all_filter()
        {
            _filter = new AcceptAllTransactionFilter();
            var transactions      = GetTransactions();
            var addedTransactions = ApplyFilter(transactions);

            addedTransactions.Length.Should().Be(transactions.Length);
        }
        public void should_add_some_transactions_to_storage_when_using_accept_when_filter()
        {
            _filter = AcceptWhenTransactionFilter
                      .Create()
                      .Nonce(n => n >= 0)
                      .GasPrice(p => p > 2 && p < 1500)
                      .Build();
            var transactions      = GetTransactions();
            var addedTransactions = ApplyFilter(transactions);

            addedTransactions.Should().NotBeEmpty();
        }
示例#6
0
        public FilterContainer(
            IBlockFilter blockFilter             = null,
            ITransactionFilter transactionFilter = null,
            ITransactionReceiptFilter transactionReceiptFilter       = null,
            ITransactionAndReceiptFilter transactionAndReceiptFilter = null,
            ITransactionLogFilter transactionLogFilter = null)
        {
            if (blockFilter != null)
            {
                BlockFilters = new List <IBlockFilter>(1)
                {
                    blockFilter
                };;
            }

            if (transactionFilter != null)
            {
                TransactionFilters = new List <ITransactionFilter>(1)
                {
                    transactionFilter
                };
            }

            if (transactionReceiptFilter != null)
            {
                TransactionReceiptFilters = new List <ITransactionReceiptFilter>(1)
                {
                    transactionReceiptFilter
                };
            }

            if (transactionAndReceiptFilter != null)
            {
                TransactionAndReceiptFilters = new List <ITransactionAndReceiptFilter>(1)
                {
                    transactionAndReceiptFilter
                };
            }

            if (transactionLogFilter != null)
            {
                TransactionLogFilters = new List <ITransactionLogFilter>(1)
                {
                    transactionLogFilter
                };
            }
        }
示例#7
0
        public IList <ITransaction> GetTransactions(ITransactionFilter filter)
        {
            SqlQueryBuilder sqlQueryBuilder = new SqlQueryBuilder();

            sqlQueryBuilder.Select = " SELECT * ";
            sqlQueryBuilder.From   = " FROM [dbo].[Transaction] ";
            if (filter.Id.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Id = @Id", Param = new SqlParameter("@Id", filter.Id.Value)
                });
            }
            if (filter.CustomerId.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "CustomerId = @CustomerId", Param = new SqlParameter("@CustomerId", filter.CustomerId.Value)
                });
            }
            if (filter.TransactionTypeId.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "TransactionTypeId = @TransactionTypeId", Param = new SqlParameter("@TransactionTypeId", filter.TransactionTypeId.Value)
                });
            }
            if (!string.IsNullOrWhiteSpace(filter.Name))
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Name = @Name", Param = new SqlParameter("@Name", filter.Name)
                });
            }
            if (filter.Value.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Value = @Value", Param = new SqlParameter("@Value", filter.Value.Value)
                });
            }
            if (filter.ValueMin.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Value >= @ValueMin", Param = new SqlParameter("@ValueMin", filter.ValueMin.Value)
                });
            }
            if (filter.ValueMax.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Value <= @ValueMax", Param = new SqlParameter("@ValueMax", filter.ValueMax.Value)
                });
            }
            if (filter.Date.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Date = @Date", Param = new SqlParameter("@Date", filter.Date.Value)
                });
            }
            if (filter.DateMin.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Date >= @DateMin", Param = new SqlParameter("@DateMin", filter.DateMin.Value)
                });
            }
            if (filter.DateMax.HasValue)
            {
                sqlQueryBuilder.Where.Add(new SqlWhere()
                {
                    Where = "Date <= @DateMax", Param = new SqlParameter("@DateMax", filter.DateMax.Value)
                });
            }

            var table        = SqlService.GetDataTable(sqlQueryBuilder);
            var myEnumerable = table.AsEnumerable();

            var result = (from item in myEnumerable select new Transaction {
                Id = item.Field <int>("Id"),
                Name = item.Field <string>("Name"),
                Description = item.Field <string>("Description"),
                Value = item.Field <decimal>("Value"),
                TransactionTypeId = item.Field <int>("TransactionTypeId"),
                CustomerId = item.Field <int?>("CustomerId"),
                Date = item.Field <DateTime>("Date")
            }).ToList <ITransaction>();

            var ttService = new TransactionTypeService();
            var tts       = ttService.GetTransactionTypes();

            var cService = new CustomerService();
            var cs       = cService.GetCustomers();

            foreach (var trans in result)
            {
                trans.TransactionType = tts.Where(tt => tt.Id == trans.TransactionTypeId).FirstOrDefault();
                if (trans.CustomerId.HasValue)
                {
                    trans.Customer = cs.Where(c => c.Id == trans.CustomerId.Value).FirstOrDefault();
                }
            }

            return(result);
        }
示例#8
0
 public FilterContainer(ITransactionFilter transactionFilter)
     : this(null, transactionFilter)
 {
 }