public IHttpActionResult Deposit([FromBody] CreateDepositRequest request)
        {
            var account = _repositorywrapper.BankAccount.GetAccountById(request.Id);

            if (account == null)
            {
                return(NotFound());
            }

            var IsDeposit   = _repositorywrapper.BankAccount.Deposit(account.Id, request.Amount);
            var transaction = _repositorywrapper.Transactions.AddTransaction(
                account.AccountNumber,
                request.Amount,
                DateTime.Now,
                account.Id,
                IsDeposit ? nameof(Deposit) : "Nothing have been deposit");

            var response = new TransactionReponse
            {
                AccountNumber = transaction.AccountNumber,
                Balance       = account.Balance,
                Amount        = transaction.Amount,
                Date          = transaction.Date.ToString("dd-MM-yyyy"),
                BankAccountId = transaction.BankAccountId,
                Action        = transaction.Action
            };

            return(Json(response));
        }
        public IHttpActionResult Withdraw([FromBody] CreateWithdrawRequest request)
        {
            var account = _repositorywrapper.BankAccount.GetAccountById(request.Id);

            if (account == null)
            {
                return(NotFound());
            }

            var IsWithdrawn = _repositorywrapper.BankAccount.Withdraw(account.Id, request.Amount);
            var transaction = _repositorywrapper.Transactions.AddTransaction(
                account.AccountNumber,
                request.Amount,
                DateTime.Now,
                account.Id,
                IsWithdrawn ? nameof(Withdraw) : "Not enough money");


            var response = new TransactionReponse
            {
                AccountNumber = transaction.AccountNumber,
                Balance       = account.Balance,
                Amount        = transaction.Amount,
                Date          = transaction.Date.ToString("dd-MM-yyyy"),
                BankAccountId = transaction.BankAccountId,
                Action        = transaction.Action
            };

            return(Json(response));
        }
        public IActionResult Privacy(string status, string tx_ref, string transaction_id)
        {
            var                strRequest = Request.QueryString.ToString();
            var                dict       = HttpUtility.ParseQueryString(strRequest);
            var                json       = JsonConvert.SerializeObject(dict.AllKeys.ToDictionary(k => k, k => dict[k]));
            FlutterWaveApi     api        = new FlutterWaveApi(SecretKey);
            TransactionReponse resp       = api.Verify(transaction_id);

            return(View());
        }
        public IActionResult Index()
        {
            Guid            refId   = Guid.NewGuid();
            FlutterWaveApi  api     = new FlutterWaveApi(SecretKey);
            TransactRequest request = new TransactRequest();

            request.currency        = "NGN";
            request.amount          = 15000;
            request.tx_ref          = refId.ToString();
            request.redirect_url    = "http://*****:*****@yahoo.com",
                name        = "Ekene Duru",
                phonenumber = "08012345678"
            };
            request.meta = new MetaR()
            {
                consumer_id   = 23333,
                consumer_mac  = "45666666655",
                ExtraField    = "gooooo",
                ExtraFieldTwo = "455544444444444444"
            };
            request.customizations = new Customizations {
                title = "Test Payment", logo = "", description = "Middleout isn't free. Pay the price"
            };
            TransactionReponse resp = api.Initialize(request);

            if (resp.status == "success")
            {
                HttpContext.Response.Redirect(resp.data.link);
            }

            return(View());
        }