public ActionResult UpdateBalance(UserBalance m)
        {
            inject();

            var update = new Services.Account().UpdateAccountBalance(m.AccountNo, m.Balance);

            return(RedirectToAction("User1", new { userid = m.Id }));

            return(RedirectToAction("User1", new { userid = m.Id }));
        }
        public ActionResult CreateAuthorizationCodes(string userid)
        {
            var accountNumb = new Services.Account().getAccountNumber(userid);

            var code = new CodesDto
            {
                accountNo = accountNumb
            };

            return(View(code));
        }
        public ActionResult Index()
        {
            inject();
            var acctService = new Services.Account();
            var balance     = ViewBag.balance = acctService.GetBalance(accountNumber);

            ViewBag.accountNo = accountNumber = acctService.getAccountNumber(userId);
            var transactions    = ViewBag.transactions = _context.ForwardTransfers.Where(a => a.AccountID == accountNumber).Count();
            var Alltransactions = _context.ForwardTransfers.Where(a => a.AccountID == this.accountNumber).OrderByDescending(d => d.Date).ToList();

            return(View(Alltransactions));
        }
        public ActionResult CheckAccount(string id)
        {
            var check = new Services.Account().FindAccount(id);

            if (check)
            {
                return(Json(new { status = 200, Message = "Account Found" }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { status = 0, Message = "Account Not Found" }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult ApproveTransaction(int id)
        {
            inject();
            var check = _context.ForwardTransfers.Find(id);

            if (check == null)
            {
                return(RedirectToAction("Transactions"));
            }

            var accountService = new Services.Account();

            var balance    = Convert.ToDecimal(accountService.GetBalance(check.AccountID));
            var newBalance = Convert.ToDecimal(balance - check.Amount);

            accountService.UpdateAccountBalance(check.AccountID, newBalance);

            check.Status = Services.TransactionStatus.SUCCESSFUL.ToString();
            _context.Entry(check);
            _context.SaveChanges();
            return(RedirectToAction("Transactions"));
        }
        public ActionResult Transfer(TransferDto m)
        {
            inject();
            string userId = User.Identity.GetUserId();

            accountNumber = new Services.Account().getAccountNumber(userId);

            var codes = _context.TransactionCodes.Where(a => a.AccountNo == accountNumber).FirstOrDefault();
            //valid codes

            var accountService = new Services.Account();
            var checkDes       = accountService.FindAccount(m.destinationAccountNo);

            if (checkDes == true)
            {
                //save transaction
                //get balance
                var balance = Convert.ToDecimal(accountService.GetBalance(accountNumber));
                if (balance >= m.amount)
                {
                    var newBalance = balance - m.amount;
                    accountService.UpdateAccountBalance(accountNumber, newBalance);
                    _context.ForwardTransfers.Add(new ForwardTransfer
                    {
                        AccountID           = m.accountNo,
                        Amount              = m.amount,
                        BeneficaryAddress   = m.address,
                        BeneficaryBank      = m.bBankName,
                        BeneficaryName      = m.bName,
                        BeneficarySwiftCode = m.swiftCode,
                        IBAN = m.iban,
                        DestinationAccountNo = m.destinationAccountNo,
                        Purpose = m.purpose,
                        Status  = Services.TransactionStatus.SUCCESSFUL.ToString(),
                        Date    = DateTime.UtcNow
                    });
                    _context.SaveChanges();
                    var destinationAccountBalance         = Convert.ToDecimal(accountService.GetBalance(m.destinationAccountNo));
                    var destnationNewBalance              = destinationAccountBalance + m.amount;
                    var updateDestinatationAccountBalance = accountService.UpdateAccountBalance(m.destinationAccountNo, destnationNewBalance);
                    return(Json(new { status = 200, message = "Transaction Successful" }));
                }
                else
                {
                    //Insufficent Fund
                    return(Json(new { status = 0, message = "Insufficent Fund in account" }));
                }
            }
            else if (codes == null)
            {
                return(Json(new { status = 0, message = "Something went wrong please contact service provider " }));
            }
            else if (codes.COT == m.cot && codes.IMF == m.imf && codes.TAX == m.tax)
            {
                //check if destination account

                _context.ForwardTransfers.Add(new ForwardTransfer
                {
                    AccountID           = m.accountNo,
                    Amount              = m.amount,
                    BeneficaryAddress   = m.address,
                    BeneficaryBank      = m.bBankName,
                    BeneficaryName      = m.bName,
                    BeneficarySwiftCode = m.swiftCode,
                    IBAN = m.iban,
                    DestinationAccountNo = m.destinationAccountNo,
                    Purpose = m.purpose,
                    Status  = Services.TransactionStatus.PENDING.ToString(),
                    Date    = DateTime.UtcNow
                });
                _context.SaveChanges();
                //no account in system
                return(Json(new { status = 200, message = "Request has been sent, and its awaiting approval" }));
            }
            else
            {
                return(Json(new { status = 0, message = "Transaction Failed at this moment, Hope you entered the right infomations" }));
            }
        }