internal virtual void Filter(GlobalFilterCriteria criteria)
{
ThrowIfDisposed();
if (criteria == null)
{
this.changeHash = Guid.NewGuid();
Transactions = AllTransactions.ToList();
DurationInMonths = this.fullDuration;
Filtered = false;
return;
}
if (criteria.BeginDate > criteria.EndDate)
{
throw new ArgumentException("End date must be after the begin date.");
}
this.currentFilter = criteria;
this.changeHash = Guid.NewGuid();
if (criteria.Cleared)
{
Transactions = AllTransactions.ToList();
DurationInMonths = this.fullDuration;
Filtered = false;
return;
}
IEnumerable<Transaction> query = BaseFilterQuery(criteria);
Transactions = query.ToList();
DurationInMonths = CalculateDuration(criteria, Transactions);
this.duplicates = null;
Filtered = true;
}