public async Task <IActionResult> Withdrawal() { var accountId = Convert.ToInt32(HttpContext.Session.GetString(SessionKeyAccountId)); var account = await _context.Accounts .AsNoTracking() .SingleOrDefaultAsync(x => x.AccountID == accountId); ViewModels.Withdrawal withdrawalViewModel = new ViewModels.Withdrawal(); withdrawalViewModel.AccountNumber = account.AccountNumber; withdrawalViewModel.Balance = account.Balance; return(View(withdrawalViewModel)); }
public async Task <IActionResult> Withdrawal(ViewModels.Withdrawal withdrawalViewModel) { try { var accountName = HttpContext.Session.GetString(SessionKeyAccountName); var accountId = Convert.ToInt32(HttpContext.Session.GetString(SessionKeyAccountId)); if (ModelState.IsValid) { Transaction transaction = new Transaction(); transaction.AccountID = accountId; transaction.Amount = withdrawalViewModel.Amount; transaction.TransactionType = Transaction.TransactionTypeEnum.Withdrawal; _context.Add(transaction); var commitResult = _context.SaveChanges(); if (commitResult > 0) { var account = _context.Accounts .AsNoTracking() .SingleOrDefault(x => x.AccountID == transaction.AccountID); account.Balance -= transaction.Amount; _context.Update(account); _context.SaveChanges(); } return(RedirectToAction("Index", "Home")); } } catch (DbUpdateException /* ex */) { //Log the error (uncomment ex variable name and write a log. ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists " + "see your system administrator."); } return(null); }