public Income(User user, decimal amount, string description)
 {
     User = user;
     Amount = amount;
     Description = description;
     User.DepositCash(amount);
 }
 public void CreateExpense(User user, string comment, decimal amount, Category category, DateTime date)
 {
     if (CanCreateExpense(user, amount))
     {
         Expense expense = new Expense(user, comment, amount, category, date);
         Factory.GetFactory().GetExpensesRepository().RegisterExpense(expense);
     }
 }
 public void CreateSaving(User user, string goalName, string description, decimal goalAmount, decimal initialAmount)
 {
     if (CanCreateSaving(user, initialAmount))
     {
         Saving saving = new Saving(user, goalName, description, goalAmount, initialAmount);
         Factory.GetFactory().GetSavingsRepository().RegisterSaving(saving);
     }
 }
 public Expense(User user, string comment, decimal amount, Category category, DateTime date)
 {
     Comment = comment;
     Amount = amount;
     User = user;
     Category = category;
     Date = date;
     User.WithdrawCash(amount);
 }
 public Saving(User user, string goalName, string description, decimal goalAmount, decimal initialAmount)
 {
     User = user;
     GoalName = goalName;
     Description = description;
     GoalAmount = goalAmount;
     InitialAmount = initialAmount;
     User.WithdrawCash(initialAmount);
     DepositCash(initialAmount);
 }
        public List<Expense> GetCategoryExpenses(Category category, User user)
        {
            List<Expense> expenses = Factory.GetFactory().GetExpensesRepository().GetUserExpenses(user);
            List<Expense> filtered = new List<Expense>();

            if (expenses.Count > 0)
            {
                foreach (Expense expense in expenses)
                {
                    if (expense.Category.Name.Equals(category.Name))
                        filtered.Add(expense);
                }
            }

            return filtered;
        }
        public List<Saving> GetUserSavings(User user)
        {
            List<Saving> savings = Factory.GetFactory().GetSavingsRepository().GetAllSavings();
            List<Saving> toReturn = new List<Saving>();

            if (savings.Count > 0)
            {

                foreach (Saving saving in savings)
                {
                    if (saving.User.Name.Equals(user.Name))
                    {
                        toReturn.Add(saving);
                    }
                }
            }

            return toReturn;
        }
 public void CreateIncome(User user, decimal amount, string description)
 {
     Income income = new Income(user, amount, description);
     Factory.GetFactory().GetIncomesRepository().RegisterIncome(income);
 }
 public Boolean CanCreateExpense(User user, decimal amount)
 {
     return user.CanWidthraw(amount);
 }
 public List<Expense> GetUserExpenses(User user)
 {
     return Factory.GetFactory().GetExpensesRepository().GetUserExpenses(user);
 }
 public Boolean CanCreateSaving(User user, decimal amount)
 {
     return user.CanWidthraw(amount);
 }
 private Boolean isValid(decimal goalAmount, decimal initialAmount, User user)
 {
     return ((initialAmount < goalAmount) && (controller.CanCreateSaving(user, initialAmount)));
 }
 public List<Income> GetUserIncomes(User user)
 {
     return Factory.GetFactory().GetIncomesRepository().GetUserIncomes(user);
 }
 public decimal GetBalance(User user)
 {
     return user.Balance;
 }