protected void SortExpenses(string field = "name", bool reverse = false) { field = field.ToLower(); switch (field) { case "importance": FilteredExpenses.Sort((expense, other) => expense.Importance.CompareTo(other.Importance)); break; case "category": FilteredExpenses.Sort((expense, other) => expense.Category.CompareTo(other.Category)); break; case "cost": FilteredExpenses.Sort((expense, other) => expense.Cost.CompareTo(other.Cost)); break; case "count": FilteredExpenses.Sort((expense, other) => expense.Cost.CompareTo(other.Cost)); break; case "total cost": FilteredExpenses.Sort(((expense, other) => expense.TotalCost.CompareTo(other.TotalCost))); break; default: FilteredExpenses.Sort((expense, other) => expense.Name.CompareTo(other.Name)); break; } if (reverse) { FilteredExpenses.Reverse(); } }
protected void FilterExpenses() { FilteredExpenses.Clear(); foreach (var expense in Expenses) { if (!string.IsNullOrEmpty(Filter.Name) && !expense.Name.Contains(Filter.Name)) { continue; } if (!string.IsNullOrEmpty(Filter.Category) && !expense.Category.Contains(Filter.Category)) { continue; } if (expense.Importance == 0 && !Filter.NotImportant) { continue; } if (expense.Importance == 1 && !Filter.Important) { continue; } if (expense.Importance == 2 && !Filter.VeryImportant) { continue; } if (expense.Cost < Filter.CostLowerBound) { continue; } if (Filter.CostUpperBound > 0 && (expense.Cost > Filter.CostUpperBound)) { continue; } FilteredExpenses.Add(expense); } IsFilterFormOpen = false; }
protected int GetFilteredCosts() { return(FilteredExpenses.Sum(expense => expense.TotalCost)); }
protected void ClearFilter() { Filter = new ExpenseFilter(); FilteredExpenses.Clear(); FilteredExpenses.AddRange(Expenses); }