public async Task <IActionResult> AddExpense(MonthlyBudgetBoardDetail request) { try { // TODO: Add insert logic here var expense = new Expense { ExpenseName = request.ExpenseModel.ExpenseName, ExpenseAmount = request.ExpenseModel.ExpenseAmount, ExpenseDate = request.ExpenseModel.ExpenseDate, ExpenseTypeId = request.ExpenseModel.ExpenseTypeId }; var expenseId = await _monthlyBudgetService.AddExpenseToMonthlyBudgetBoard(expense); var result = await _monthlyBudgetService.BoardExpenseTransaction(request.MonthlyBudgetBoardId, expenseId); return(RedirectToAction("Details", new { id = request.MonthlyBudgetBoardId })); } catch (Exception e) { ModelState.AddModelError("", e.Message); return(View(request)); } }
public async Task <MonthlyBudgetBoardDetail> GetMonthlyBudgetBoardById(int id) { //Get Budget Board Entity Data var board = await _midasContext.MonthlyBudgetBoard.FirstOrDefaultAsync(mb => mb.MonthlyBudgetId == id); //Query the Transaction table to see what Monthly Expenses are associated with a Budget Board var budgetExpenses = await _midasContext.MonthlyBudgetExpense.Where(be => be.MonthlyBudgetBoardId == id).ToArrayAsync(); //New list to store monthly expense data for mapping to the DTO var expenses = new List <ExpenseListItem>(); foreach (MonthlyBudgetExpense entity in budgetExpenses) { //Query the Expense Table to get table data var expense = _midasContext.Expense.FirstOrDefault(e => e.ExpenseId == entity.ExpenseId); var expenseType = _midasContext.ExpenseType.FirstOrDefault(e => e.ExpenseTypeId == expense.ExpenseTypeId); var newExpense = new ExpenseListItem { ExpenseId = expense.ExpenseId, ExpenseName = expense.ExpenseName, ExpenseAmount = expense.ExpenseAmount, ExpenseTypeId = expense.ExpenseTypeId, ExpenseTypeName = expenseType.ExpenseTypeName, ExpenseDate = expense.ExpenseDate }; expenses.Add(newExpense); } var dto = new MonthlyBudgetBoardDetail { MonthlyBudgetBoardId = board.MonthlyBudgetId, BudgetBoardId = board.BudgetBoardId, MonthlyBudgetBoardName = board.MonthlyBudgetName, ExpenseList = expenses }; return(dto); }