Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }