예제 #1
0
        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));
        }
예제 #2
0
        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);
        }