private void ApplyPaymentFilter() { var filter = new PaymentFilter(); decimal tempDecimal; if(!IsNullOrEmpty(paymentAmountFrom.Text) && Decimal.TryParse(paymentAmountFrom.Text, out tempDecimal) && !IsNullOrEmpty(paymentAmountTo.Text) && Decimal.TryParse(paymentAmountTo.Text, out tempDecimal)){ filter.From.Amount = Decimal.Parse ( paymentAmountFrom.Text ); filter.To.Amount = Decimal.Parse ( paymentAmountTo.Text ); } if(!IsNullOrEmpty(paymentRateFrom.Text) && Decimal.TryParse(paymentRateFrom.Text, out tempDecimal) && !IsNullOrEmpty(paymentRateTo.Text) && Decimal.TryParse(paymentRateTo.Text, out tempDecimal)) { filter.From.Rate = Decimal.Parse(paymentRateFrom.Text); filter.To.Rate = Decimal.Parse(paymentRateTo.Text); } if(!IsNullOrEmpty(paymentSumFrom.Text) && Decimal.TryParse(paymentSumFrom.Text, out tempDecimal) && !IsNullOrEmpty(paymentSumTo.Text) && Decimal.TryParse(paymentSumTo.Text, out tempDecimal)) { filter.SumFrom = Decimal.Parse(paymentSumFrom.Text); filter.SumTo = Decimal.Parse(paymentSumTo.Text); } filter.From.PaymentDate = new DateTime(paymentDateFrom.Value.Year, paymentDateFrom.Value.Month, paymentDateFrom.Value.Day); filter.To.PaymentDate = new DateTime(paymentDateTo.Value.Year, paymentDateTo.Value.Month, paymentDateTo.Value.Day); filter.From.MonthPaid = new DateTime(paymentMonthFrom.Value.Year, paymentMonthFrom.Value.Month, 1); filter.To.MonthPaid = new DateTime(paymentMonthTo.Value.Year, paymentMonthTo.Value.Month, 1); if (!IsNullOrEmpty ( paymentCustomerID.SelectedItem ) && !((Customer) paymentCustomerID.SelectedItem ).ID.Equals (Guid.Empty )){ filter.From.CustomerID = filter.To.CustomerID = ( (Customer) paymentCustomerID.SelectedItem ).ID; } control.ApplyFilter ( filter ); }
public void PaymentFilterTest() { PersistenceManager pm = PersistenceManager.GetInstance(); pm.DeleteAll(); PaymentController control = PaymentController.GetInstance(); Customer cust1 = new Customer{ FirstName = "ffd", LastName = "dsf", MiddleName = "ds", Number = "1" }; Customer cust2 = new Customer { FirstName = "dsaf", LastName = "fsdg", MiddleName = "rewr", Number = "2" }; Customer cust3 = new Customer { FirstName = "gjnhgk", LastName = "yiuio", MiddleName = "m,.,m.", Number = "3" }; Assert.IsTrue(pm.AddCustomer(cust1)); Assert.IsTrue(pm.AddCustomer(cust2)); Assert.IsTrue(pm.AddCustomer(cust3)); Payment p1 = new Payment{ Amount = (decimal) 1.34, CustomerID = cust1.ID, MonthPaid = new DateTime(2000, 2, 1), PaymentDate = new DateTime(2009, 2, 1), Rate = (decimal) 10.435 }; Payment p2 = new Payment { Amount = (decimal)2.435, CustomerID = cust2.ID, MonthPaid = new DateTime(2000, 3, 1), PaymentDate = new DateTime(2008, 2, 1), Rate = (decimal)9.5445435 }; Payment p3 = new Payment { Amount = (decimal)3.545, CustomerID = cust3.ID, MonthPaid = new DateTime(2000, 4, 1), PaymentDate = new DateTime(2007, 2, 1), Rate = (decimal)8.4345435 }; Payment p4 = new Payment { Amount = (decimal)4.3235, CustomerID = cust1.ID, MonthPaid = new DateTime(2001, 12, 1), PaymentDate = new DateTime(2006, 2, 1), Rate = (decimal)7.321432 }; Payment p5 = new Payment { Amount = (decimal)5.3243, CustomerID = cust2.ID, MonthPaid = new DateTime(2002, 1, 1), PaymentDate = new DateTime(2005, 2, 1), Rate = (decimal)6.432435 }; Payment p6 = new Payment { Amount = (decimal)6.43534, CustomerID = cust3.ID, MonthPaid = new DateTime(2002, 3, 1), PaymentDate = new DateTime(2004, 2, 1), Rate = (decimal)5.3232135 }; Payment p7 = new Payment { Amount = (decimal)7.4325, CustomerID = cust1.ID, MonthPaid = new DateTime(2002, 4, 1), PaymentDate = new DateTime(2003, 2, 1), Rate = (decimal)4.3214325 }; Payment p8 = new Payment { Amount = (decimal)8.432543, CustomerID = cust2.ID, MonthPaid = new DateTime(2002, 11, 1), PaymentDate = new DateTime(2002, 2, 1), Rate = (decimal)3.43435 }; Payment p9 = new Payment { Amount = (decimal)9.3436546545, CustomerID = cust3.ID, MonthPaid = new DateTime(2010, 1, 1), PaymentDate = new DateTime(2001, 2, 1), Rate = (decimal)2.44353435 }; Payment p10 = new Payment { Amount = (decimal)10.43545, CustomerID = cust1.ID, MonthPaid = new DateTime(2010, 12, 1), PaymentDate = new DateTime(2000, 2, 1), Rate = (decimal)1.435 }; Assert.IsTrue(pm.AddPayment(p1)); Assert.IsTrue(pm.AddPayment(p2)); Assert.IsTrue(pm.AddPayment(p3)); Assert.IsTrue(pm.AddPayment(p4)); Assert.IsTrue(pm.AddPayment(p5)); Assert.IsTrue(pm.AddPayment(p6)); Assert.IsTrue(pm.AddPayment(p7)); Assert.IsTrue(pm.AddPayment(p8)); Assert.IsTrue(pm.AddPayment(p9)); Assert.IsTrue(pm.AddPayment(p10)); PaymentFilter filter = new PaymentFilter(); filter.From.Amount = 1; filter.To.Amount = 3; control.ApplyFilter (filter); List <Payment> list = control.GetFilteredPayments(); Assert.AreEqual ( 2, list.Count); Assert.IsTrue ( list.Contains ( p1 ) ); Assert.IsTrue ( list.Contains ( p2 ) ); filter.From.Amount = (decimal) 1.34; filter.To.Amount = (decimal) 1.34; control.ApplyFilter ( filter ); list = control.GetFilteredPayments(); Assert.AreEqual(1, list.Count); Assert.IsTrue(list[0].Equals ( p1 )); filter = new PaymentFilter(); filter.From.CustomerID = cust1.ID; filter.To.CustomerID = cust1.ID; control.ApplyFilter ( filter ); list = control.GetFilteredPayments(); Assert.AreEqual(4, list.Count); Assert.IsTrue(list.Contains(p1)); Assert.IsTrue(list.Contains(p4)); Assert.IsTrue(list.Contains(p10)); Assert.IsTrue(list.Contains(p7)); filter.From.CustomerID = cust2.ID; filter.To.CustomerID = cust2.ID; control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(3, list.Count); Assert.IsTrue(list.Contains(p2)); Assert.IsTrue(list.Contains(p5)); Assert.IsTrue(list.Contains(p8)); filter = new PaymentFilter(); filter.From.MonthPaid = new DateTime(2002, 1, 1); filter.To.MonthPaid = new DateTime(2010, 2, 1); control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(5, list.Count); Assert.IsTrue(list.Contains(p5)); Assert.IsTrue(list.Contains(p6)); Assert.IsTrue(list.Contains(p7)); Assert.IsTrue(list.Contains(p8)); Assert.IsTrue(list.Contains(p9)); filter.From.MonthPaid = new DateTime(2000, 2, 1); filter.To.MonthPaid = new DateTime(2000, 2, 1); control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(1, list.Count); Assert.IsTrue(list[0].Equals ( p1 )); filter = new PaymentFilter(); filter.From.PaymentDate = new DateTime(2005, 12, 1); filter.To.PaymentDate = new DateTime(2009, 1, 1); control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(3, list.Count); Assert.IsTrue(list.Contains(p2)); Assert.IsTrue(list.Contains(p3)); Assert.IsTrue(list.Contains(p4)); filter.From.PaymentDate = new DateTime(2002, 2, 1); filter.To.PaymentDate = new DateTime(2002, 2, 1); control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(1, list.Count); Assert.IsTrue(list.Contains(p8)); filter = new PaymentFilter(); filter.From.Rate = 5; filter.To.Rate = (decimal)9.53; control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(4, list.Count); Assert.IsTrue(list.Contains(p3)); Assert.IsTrue(list.Contains(p6)); Assert.IsTrue(list.Contains(p4)); Assert.IsTrue(list.Contains(p5)); filter.From.Rate = (decimal)1.435; filter.To.Rate = (decimal)1.435; control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(1, list.Count); Assert.IsTrue(list.Contains(p10)); filter = new PaymentFilter(); filter.SumFrom = (decimal) 29.9; filter.SumTo = (decimal)39.9; control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(5, list.Count); Assert.IsTrue(list.Contains(p3)); Assert.IsTrue(list.Contains(p4)); Assert.IsTrue(list.Contains(p5)); Assert.IsTrue(list.Contains(p6)); Assert.IsTrue(list.Contains(p7)); filter = new PaymentFilter(); filter.From.Amount = 1; filter.To.Amount = 10; filter.From.MonthPaid = new DateTime(2000, 3, 1); filter.To.MonthPaid = new DateTime(2012, 3, 1); filter.From.PaymentDate = new DateTime(2002, 1, 1); filter.To.PaymentDate = new DateTime(2008, 1, 1); filter.From.Rate = 0; filter.To.Rate = 8; filter.From.CustomerID = cust1.ID; filter.To.CustomerID = cust1.ID; control.ApplyFilter(filter); list = control.GetFilteredPayments(); Assert.AreEqual(2, list.Count); Assert.IsTrue(list.Contains(p4)); Assert.IsTrue(list.Contains(p7)); }
public void ApplyFilter(PaymentFilter filter) { var query = new StringBuilder(""); CultureInfo US = CultureInfo.GetCultureInfo ( "en-US" ); if (filter.From.Amount != ModelConst.DEFAULT_NUMBER && filter.To.Amount != ModelConst.DEFAULT_NUMBER) { if(query.ToString().Length > 0) query.Append(" AND "); query.Append (PaymentColumns.Amount + " >= " + filter.From.Amount.ToString(US)); query.Append ( " AND " ); query.Append(PaymentColumns.Amount + " <= " + filter.To.Amount.ToString(US)); } if(filter.From.CustomerID != Guid.Empty && filter.To.CustomerID != Guid.Empty) { if(query.ToString().Length > 0) query.Append(" AND "); query.Append(PaymentColumns.CustomerId + " >= '" + filter.From.CustomerID + "'"); query.Append(" AND "); query.Append(PaymentColumns.CustomerId + " <= '" + filter.To.CustomerID + "'"); } if(filter.From.MonthPaid != ModelConst.DEFAULT_DATE && filter.To.MonthPaid != ModelConst.DEFAULT_DATE) { if(query.ToString().Length > 0) query.Append(" AND "); query.Append(PaymentColumns.MonthPaid + " >= '" + filter.From.MonthPaid + "'"); query.Append(" AND "); query.Append(PaymentColumns.MonthPaid + " <= '" + filter.To.MonthPaid + "'"); } if(filter.From.PaymentDate != ModelConst.DEFAULT_DATE && filter.To.PaymentDate != ModelConst.DEFAULT_DATE) { if(query.ToString().Length > 0) query.Append(" AND "); query.Append(PaymentColumns.PaymentDate + " >= '" + filter.From.PaymentDate + "'"); query.Append(" AND "); query.Append(PaymentColumns.PaymentDate + " <= '" + filter.To.PaymentDate + "'"); } if(filter.From.Rate != ModelConst.DEFAULT_NUMBER && filter.To.Rate != ModelConst.DEFAULT_NUMBER) { if(query.ToString().Length > 0) query.Append(" AND "); query.Append(PaymentColumns.Rate + " >= " + filter.From.Rate.ToString(US)); query.Append(" AND "); query.Append(PaymentColumns.Rate + " <= " + filter.To.Rate.ToString(US)); } if (filter.SumFrom != decimal.MinValue && filter.SumTo != decimal.MinValue){ if(query.ToString().Length > 0) query.Append(" AND "); query.Append(PaymentColumns.Rate + " * " + PaymentColumns.Amount + " >= " + filter.SumFrom.ToString(US)); query.Append(" AND "); query.Append(PaymentColumns.Rate + " * " + PaymentColumns.Amount + " <= " + filter.SumTo.ToString(US)); } paymentsView.RowFilter = query.ToString(); }