public ActionResult Create(TransactionViewModel transactionVM) { try { switch (transactionVM.Type) { case TransactionTypesEnum.Expense: { if (transactionVM.IsBill) { ExpenseManager expenseManager = new ExpenseManager(); transactionVM.Transaction.Payee = expenseManager.GetExpense(transactionVM.Transaction?.SelectedExpenseId).Name ?? string.Empty; ModelState["Transaction.Payee"].Errors.Clear(); UpdateModel(transactionVM.Transaction); } else { UpdateModel(transactionVM.Transaction); } if (!ModelState.IsValid) { return(View(transactionVM)); } _transactionManager.Create(transactionVM); break; } case TransactionTypesEnum.Income: { if (!transactionVM.AutoTransferPaycheckContributions) { _transactionManager.Create(transactionVM); } else { if (!_transactionManager.HandlePaycheckContributions(transactionVM.Transaction)) { return(View(transactionVM)); } } break; } case TransactionTypesEnum.Transfer: throw new NotImplementedException(); default: throw new NotImplementedException(); } if (transactionVM.moreTransactions) { Create(); } return(RedirectToAction("Index")); } catch (Exception e) { Logger.Instance.Error(e); return(View(new TransactionViewModel())); } }