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)); }