public async Task <IActionResult> Transfer(int?id) { if (id == null) { return(NotFound()); } ViewBag.Account = "bus"; ViewBag.Success = false; var user = User.FindFirstValue(ClaimTypes.NameIdentifier); var currAcct = await _context.BusinessAccounts.FirstOrDefaultAsync(m => m.Id == id); var checkList = await _context.CheckingAccounts.Where(d => d.UserID == user && d.IsOpen != false).ToListAsync(); var bussinesList = await _context.BusinessAccounts.Where(d => d.UserID == user && d.Id != id && d.IsOpen != false).ToListAsync(); var loanList = await _context.LoanAccounts.Where(d => d.UserID == user && d.IsOpen != false && d.Balance > 0).ToListAsync(); ViewBag.AcctInfo = currAcct; CheckingTransferViewModel transferList = new CheckingTransferViewModel() { CheckingList = checkList, BusinessList = bussinesList, LoanList = loanList }; if (checkList == null || bussinesList == null || loanList == null) { return(NotFound()); } return(View(transferList)); }
public async Task <IActionResult> Transfer(int id, string accountTransfer, decimal amount) { var currAcct = await _context.BusinessAccounts.FirstOrDefaultAsync(m => m.Id == id); var user = User.FindFirstValue(ClaimTypes.NameIdentifier); ViewBag.Success = false; ViewBag.AcctInfo = currAcct; var checkList = await _context.CheckingAccounts.Where(d => d.UserID == user && d.IsOpen != false).ToListAsync(); var bussinesList = await _context.BusinessAccounts.Where(d => d.UserID == user && d.Id != id && d.IsOpen != false).ToListAsync(); var loanList = await _context.LoanAccounts.Where(d => d.UserID == user && d.IsOpen != false && d.Balance > 0).ToListAsync(); CheckingTransferViewModel transferList = new CheckingTransferViewModel() { CheckingList = checkList, BusinessList = bussinesList, LoanList = loanList }; if (amount < 0) { ModelState.AddModelError("", "Amount Can't be negative"); return(View(transferList)); } if (ModelState.IsValid) { var checkAccount = await _context.CheckingAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); var bussiAccount = await _context.BusinessAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); var loanAccount = await _context.LoanAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); var newBalance = 0M; if (currAcct.Overdraft > 0) { var overdraftTotal = amount + CalculateOverdraftInterest(amount, currAcct); currAcct.Overdraft += overdraftTotal; } else { if (amount > currAcct.Balance) { var newAmount = amount - currAcct.Balance; var overdraftTotal = newAmount + CalculateOverdraftInterest(newAmount, currAcct); currAcct.Overdraft += overdraftTotal; } else { newBalance = currAcct.Balance - amount; } } // var newBalance = currAcct.Balance - amount; if (checkAccount != null) { var newDestBalance = checkAccount.Balance + amount; currAcct.Balance = newBalance; checkAccount.Balance = newDestBalance; AddTransaction(checkAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } if (bussiAccount != null) { var newDestBalance = 0M; if (bussiAccount.Overdraft > 0) { if (amount > bussiAccount.Overdraft) { var newAmount = amount - bussiAccount.Overdraft; bussiAccount.Overdraft = 0M; newDestBalance = bussiAccount.Balance + newAmount; } else { bussiAccount.Overdraft -= amount; } } else { newDestBalance = bussiAccount.Balance + amount; } currAcct.Balance = newBalance; bussiAccount.Balance = newDestBalance; AddTransaction(bussiAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } if (loanAccount != null) { if (amount > loanAccount.Balance) { ModelState.AddModelError("", "Transfer amount is greater than balance in Loan Account"); return(View(transferList)); } var newDestBalance = loanAccount.Balance - amount; currAcct.Balance = newBalance; loanAccount.Balance = newDestBalance; AddTransaction(loanAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } } return(View(transferList)); }
public async Task <IActionResult> Transfer(int id, string accountTransfer, decimal amount) { var currAcct = await _context.TermAccounts.FirstOrDefaultAsync(m => m.Id == id); var user = User.FindFirstValue(ClaimTypes.NameIdentifier); ViewBag.Success = false; ViewBag.AcctInfo = currAcct; var checkList = await _context.CheckingAccounts.Where(d => d.UserID == user && d.IsOpen != false).ToListAsync(); var bussinesList = await _context.BusinessAccounts.Where(d => d.UserID == user && d.IsOpen != false).ToListAsync(); var loanList = await _context.LoanAccounts.Where(d => d.UserID == user && d.IsOpen != false && d.Balance > 0).ToListAsync(); CheckingTransferViewModel transferList = new CheckingTransferViewModel() { CheckingList = checkList, BusinessList = bussinesList, LoanList = loanList }; if (ModelState.IsValid) { var checkAccount = await _context.CheckingAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); var bussiAccount = await _context.BusinessAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); var loanAccount = await _context.LoanAccounts.FirstOrDefaultAsync(m => m.UserID == currAcct.UserID && m.AccountNumber == accountTransfer); int num = DateTime.Compare(DateTime.Today, currAcct.MaturityDate); if (num < 0) { ModelState.AddModelError("", "Cannot Transfer, Maturity Date has not been reached"); return(View(transferList)); } if (CheckWithdrawOverdraft(currAcct, amount)) //check if enough funds to withdraw { return(View(transferList)); } var newBalance = currAcct.Balance - amount; if (checkAccount != null) { var newDestBalance = checkAccount.Balance + amount; currAcct.Balance = newBalance; checkAccount.Balance = newDestBalance; AddTransaction(checkAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } if (bussiAccount != null) { var newDestBalance = 0M; if (bussiAccount.Overdraft > 0) { if (amount > bussiAccount.Overdraft) { var newAmount = amount - bussiAccount.Overdraft; bussiAccount.Overdraft = 0M; newDestBalance = bussiAccount.Balance + newAmount; } else { bussiAccount.Overdraft -= amount; } } else { newDestBalance = bussiAccount.Balance + amount; } currAcct.Balance = newBalance; bussiAccount.Balance = newDestBalance; AddTransaction(bussiAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } if (loanAccount != null) { if (amount > loanAccount.Balance) { ModelState.AddModelError("", "Transfer amount is greater than balance in Loan Account"); return(View(transferList)); } var newDestBalance = loanAccount.Balance - amount; currAcct.Balance = newBalance; loanAccount.Balance = newDestBalance; AddTransaction(loanAccount, amount, "Transfer In"); AddTransaction(currAcct, amount, "Transfer Out"); await _context.SaveChangesAsync(); ViewBag.Success = true; ViewBag.AccountNumber = currAcct.AccountNumber; ViewBag.Amount = amount; return(View(transferList)); } } return(View(transferList)); }