예제 #1
0
 private static IEnumerable <ExpenseCategoryReport> GetExpensesReport(IMoneyCalculator calculator,
                                                                      IEnumerable <Category> categories,
                                                                      MonthLog expenseLog)
 {
     return(categories.Select(category => new ExpenseCategoryReport(
                                  category,
                                  calculator,
                                  expenseLog
                                  )));
 }
예제 #2
0
        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)
                                            );
        }
예제 #3
0
        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);
        }