private static IEnumerable <ExpenseCategoryReport> GetExpensesReport(IMoneyCalculator calculator, IEnumerable <Category> categories, MonthLog expenseLog) { return(categories.Select(category => new ExpenseCategoryReport( category, calculator, expenseLog ))); }
public ExpenseCategoryReport(Category category, IMoneyCalculator calculator, MonthLog expenseLog) { CategoryKey = category.Key; Title = category.Title; Description = category.Description; Total = FinancialStats.GetTotal(calculator, expenseLog.Transactions .Where(n => category.IsSameOrParentOf(n.CategoryKey)) .Select(n => n.Amount), expenseLog.Forecasts .Where(n => category.IsSameOrParentOf(n.CategoryKey)) .Select(n => n.Amount) ); }
public MonthlyBudgetReport(YearMonth when, IMoneyCalculator calculator, IEnumerable <Category> categories, MonthLog incomeLog, MonthLog expenseLog) { if (incomeLog.Log != BudgetLogType.Incomes) { throw new ArgumentException(nameof(incomeLog)); } if (expenseLog.Log != BudgetLogType.Expenses) { throw new ArgumentException(nameof(expenseLog)); } When = when; Income = incomeLog.Total; Expense = expenseLog.Total; Balance = FinancialStats.GetBalance(calculator, Income, Expense); Expenses = GetExpensesReport(calculator, categories, expenseLog); }