public ActionResult CreateUserExpense(int budgetId, Expense model)
 {
     repository.AddExpense(model);
     return RedirectToAction("ManageExpenses", new { budgetId = budgetId });
 }
 public ActionResult CreateUserExpense(int budgetId)
 {
     ViewData.Add("budgetId", budgetId);
     Expense model = new Expense { UserId = UserId };
     return View(model);
 }
 public ActionResult DeleteUserExpense(int budgetId, Expense expense)
 {
     try
     {
         repository.DeleteExpense(expense);
         return RedirectToAction("ManageExpenses", new { budgetId = budgetId });
     }
     catch
     {
         return View();
     }
 }
 public void AddExpense(Expense expense)
 {
     context.Expenses.Add(expense);
     SaveChanges();
 }
 public void UpdateExpense(Expense expense)
 {
     Expense expenseToUpdate = GetExpense(expense.ExpenseId);
     expenseToUpdate.Name = expense.Name;
     expenseToUpdate.IsManditory = expense.IsManditory;
     SaveChanges();
 }
        public void DeleteExpense(Expense expense)
        {
            // update the totals on all the budgets that have this expense when deleting the expense all together
            var query = from budgetExpense in context.BudgetExpenses
                        where budgetExpense.ExpenseId == expense.ExpenseId
                        select budgetExpense;

            List<BudgetExpense> budgetExpenses = query.ToList();

            foreach (BudgetExpense budgetExpense in budgetExpenses)
            {
                Budget budget = budgetExpense.Budget;

                if (expense.IsManditory)
                    budget.ManditoryExpenses -= budgetExpense.Amount;
                else
                    budget.DiscretionaryExpenses -= budgetExpense.Amount;

                UpdateBudget(budget);
            }

            // remove the expense, which cascade deletes all budget expenses
            expense = GetExpense(expense.ExpenseId);
            context.Expenses.Remove(expense);
            SaveChanges();
        }