public ActionResult Reconcile([Bind(Include = "ReconciledTransactionId,NewAmount")] TransactionReconcileViewModel vm)
        {
            Transaction rTransaction = db.Transactions.AsNoTracking().FirstOrDefault(t => t.Id == vm.ReconciledTransactionId);
            Account     account      = db.Accounts.Find(rTransaction.AccountId);

            if (ModelState.IsValid)
            {
                Transaction transaction = new Transaction();
                transaction.Description             = rTransaction.Description;
                transaction.ForReconciled           = true;
                transaction.ReconciledTransactionId = vm.ReconciledTransactionId;
                transaction.Expense          = rTransaction.Expense;
                transaction.Date             = rTransaction.Date;
                transaction.AccountId        = rTransaction.AccountId;
                transaction.BudgetCategoryId = rTransaction.BudgetCategoryId;
                transaction.MadeById         = rTransaction.MadeById;
                transaction.Amount           = vm.NewAmount - rTransaction.Amount;
                db.Transactions.Add(transaction);
                db.SaveChanges();

                if (transaction.Expense)
                {
                    account.ReconciledBalance = account.CurrentBalance - (transaction.Amount);
                }
                else
                {
                    account.ReconciledBalance = account.CurrentBalance + (transaction.Amount);
                }
                db.Entry(account).Property("ReconciledBalance").IsModified = true;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.AccountName = account.Name;
            return(View(vm));
        }
        // GET: Transactions/Edit/5
        public ActionResult Reconcile(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Transaction transaction = db.Transactions.Find(id);

            if (transaction == null)
            {
                return(HttpNotFound());
            }
            Account account       = transaction.Account;
            string  currentUserId = User.Identity.GetUserId();

            if (!account.Household.Members.Select(m => m.Id).Contains(currentUserId))
            {
                return(RedirectToAction("Unauthorized", "Home"));
            }
            //put in logic for not being able to reconcile more than once
            ViewBag.AccountName = account.Name;
            TransactionReconcileViewModel vm = new TransactionReconcileViewModel();

            vm.ReconciledTransactionId = id.GetValueOrDefault();

            return(View(vm));
        }