public async Task <IActionResult> Withdraw(string id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var user = await userManager.FindByIdAsync(id);

            var customer = new CustomerWithdrawViewModel
            {
                Id            = user.Id,
                Name          = user.Name,
                Address       = user.Address,
                Balance       = user.Balance,
                AccountNumber = user.AccountNumber,
                CardNumber    = user.CardNumber,
                AccountType   = user.AccountType
            };

            if (customer == null)
            {
                return(NotFound());
            }
            return(View(customer));
        }
        public async Task <IActionResult> Withdraw(string id, [Bind("Id,Name,Address,Balance,AccountNumber,CardNumber,AccountType, WithdrawalAmount")] CustomerWithdrawViewModel obj)
        {
            if (id != obj.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var data = await userManager.FindByIdAsync(id);

                    if (obj.WithdrawalAmount <= data.Balance)
                    {
                        data.Balance -= obj.WithdrawalAmount;
                        AccountTransaction transaction = new AccountTransaction
                        {
                            CusId           = data.Id,
                            Amount          = obj.WithdrawalAmount,
                            TransactionDate = DateTime.Now,
                            TransactionType = "Withdraw"
                        };
                        _context.Transaction.Add(transaction);
                        int mess = _context.SaveChanges();
                        if (mess >= 1)
                        {
                            var result = await userManager.UpdateAsync(data);

                            if (result.Succeeded)
                            {
                                ViewBag.data = "Withdraw Completed";
                                _context.SaveChanges();
                                return(RedirectToAction(nameof(Index)));
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, "Withdraw Failed");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, $"Insufficient Funds Available. Balance on account is {data.Balance}");
                    }
                    return(View(obj));
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (await userManager.FindByIdAsync(obj.Id) == null)
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            return(View(obj));
        }