public async Task <List <BankAccountTransferData> > GetBankTransfer()
        {
            RobinhoodApi robinhoodApi = new RobinhoodApi()
            {
                BearerToken = ApplicationSettings.Default.RobinKey
            };
            OutRobinData <TransferData> datas = await robinhoodApi.GetBankTransfers();

            List <BankAccountTransferData> output = new List <BankAccountTransferData>();

            foreach (TransferData data in datas.Data)
            {
                ShowMessage($"{data.direction} -  {data.amount} on {data.scheduled}");
                DateTime createDate       = UtilityHandler.GetDateValue(data.created_at);
                DateTime updateDate       = UtilityHandler.GetDateValue(data.updated_at);
                decimal  transferAmnt     = UtilityHandler.GetDecimalNumber(data.amount);
                decimal  feeAmnt          = UtilityHandler.GetDecimalNumber(data.fees);
                BankAccountTransferData d = new BankAccountTransferData()
                {
                    ID             = data.id,
                    Ref_ID         = data.ref_id,
                    Transfer_AMNT  = transferAmnt,
                    Fees_AMNT      = feeAmnt,
                    BankAccount_ID = UtilityHandler.GetIdFromUrl(data.account),
                    Direction_CODE = data.direction,
                    Status_CODE    = data.state,
                    Created_DTTM   = createDate,
                    Update_DTTM    = updateDate
                };
                output.Add(d);
            }
            return(output);
        }
        public async Task <List <BankPortfolioData> > GetPositionData()
        {
            List <BankPortfolioData> output = new List <BankPortfolioData>();
            RobinhoodApi             api    = new RobinhoodApi()
            {
                BearerToken = ApplicationSettings.Default.RobinKey
            };
            OutRobinData <RhPosition> datas = await api.GetPositions();

            foreach (RhPosition data in datas.Data)
            {
                RhInstrument inst = await InstrumentLookup.GetRhInstrument(data.instrument);

                ShowMessage($"{inst.Symbol}- {inst.SimpleName}");
                decimal           shareCount = UtilityHandler.GetDecimalNumber(data.quantity);
                decimal           costBasis  = UtilityHandler.GetDecimalNumber(data.average_buy_price);
                BankPortfolioData d          = new BankPortfolioData()
                {
                    BankAccount_ID = UtilityHandler.GetString(data.account_number),
                    Trade_CODE     = UtilityHandler.GetString(inst.Symbol),
                    Trade_NAME     = UtilityHandler.GetString(inst.SimpleName),
                    Shares_CNT     = shareCount,
                    CostBasis_AMNT = costBasis,
                    Value_AMNT     = shareCount * costBasis,
                    Export_DATE    = DateTime.Today,
                    Instrument_ID  = inst.Id
                };
                output.Add(d);
            }
            return(output);
        }
        private static async Task <OutRobinData <RhTransaction> > GetRobinHoodTransactionData()
        {
            OutRobinData <RhTransaction> output = new OutRobinData <RhTransaction>()
            {
                Data = new List <RhTransaction>()
            };
            RobinhoodApi api = new RobinhoodApi()
            {
                BearerToken = ApplicationSettings.Default.RobinKey
            };
            string downloadUrl = "https://api.robinhood.com/orders/";
            string folderName  = $@"{ApplicationSettings.Default.LoggingFolder}\ApiData";

            if (!Directory.Exists(folderName))
            {
                Directory.CreateDirectory(folderName);
            }
            for (int i = 0; i < Settings.Default.RobinMaxPages; i++)
            {
                string           tranFileName = $@"{folderName}\Orders{i}.json";
                OutData <string> sd           = await api.GetJsonData4Url(downloadUrl);

                File.WriteAllText(tranFileName, sd.Data);
                OutRobinData <RhTransaction> datas = JsonConvert.DeserializeObject <OutRobinData <RhTransaction> >(sd.Data);
                if (datas.Data.Count > 0)
                {
                    output.Data.AddRange(datas.Data);
                }
                if (datas.Next is null || UtilityHandler.IsEmpty(datas.Next))
                {
                    break;
                }
                downloadUrl = datas.Next;
            }
            return(output);
        }