public async Task <IViewComponentResult> InvokeAsync(TransactionCategory.TransactionCategoryType type) { var viewModel = controllerTransactions.GetTransactionsCreateViewModel(User.Identity.Name); viewModel.TransactionCategoryType = type; // 根據交易類型取得主交易類別 var MainQuary = from mainTran in db.MainTransactionCategory where mainTran.TransactionType == type select mainTran; var MainSelectList = new SelectList(MainQuary, "ID", "Name"); viewModel.MainTransactionCategoryCollection = MainSelectList; // 子交易類別 int MainTransID; try { int.TryParse(viewModel.MainTransactionCategoryCollection.FirstOrDefault().Value, out MainTransID); } catch (System.Exception) { MainTransID = 0; } viewModel.SubTransactionCategoryCollection = controllerTransactions.GetSubTransactionCategory(MainTransID); // 轉帳交易使用 CreateTransfer ViewComponent if (type == TransactionCategory.TransactionCategoryType.Transfer) { return(View("CreateTransfer", viewModel)); } // 收入支出使用Default TransactionCreate ViewComponent return(View(viewModel)); }
// 更新交易時使用, 會修改後的交易金額調整帳戶餘額 (目前默認不可修改交易類型) public void UpdateTransaction(ApplicationDbContext context) { TransactionCategory.TransactionCategoryType transType = GetTransactionCategoryType(context); var accounts = context.FinancialAccount; var account = accounts.Single(ac => ac.ID == this.FinancialAccountID); var oldTransactionAmount = context.Transaction.AsNoTracking().Single(t => t.ID == ID).Amount; if (transType == TransactionCategory.TransactionCategoryType.Expense) { account.Amount += oldTransactionAmount; account.Amount -= Amount; } else if (transType == TransactionCategory.TransactionCategoryType.Income) { account.Amount -= oldTransactionAmount; account.Amount += Amount; } else if (transType == TransactionCategory.TransactionCategoryType.Transfer) { var targetAccount = accounts.Single(ac => ac.ID == this.TargetFinancialAccountID); account.Amount += oldTransactionAmount; account.Amount -= Amount; targetAccount.Amount -= oldTransactionAmount; targetAccount.Amount += Amount; } }