コード例 #1
0
        private async Task <List <String> > UpdateLinkToLoansForSelectedAccount(AccountBasic selectedAccount)
        {
            List <String> result = new List <String>();

            string script = @"(function(){
                        var table = document.getElementById('TableNIS1');
                        var result = [];
                        for (var i = 1; i < table.rows.length-1;  i++) {
                            var row = table.rows[i];
                            var cells = row.cells;
                            result[i-1] = cells[0].childNodes[1].href;
                        }

                        return JSON.stringify(result);
                    })()";

            await Browser.EvaluateScriptAsync(script)
            .ContinueWith(res =>
            {
                if (!res.IsFaulted && res.Result.Result != null)
                {
                    try
                    {
                        result = JsonConvert.DeserializeObject <List <String> >(res.Result.Result.ToString());
                    }
                    catch (Exception e)
                    {
                    }
                }
            }, TaskScheduler.Default);

            return(result);
        }
コード例 #2
0
        private AccountBasic GetSelectedAccount()
        {
            AccountBasic result      = null;
            HTMLDocument dom         = (HTMLDocument)_transactionsBrowser.Document;
            object       accountsObj = dom.getElementById("ddlAccounts_m_ddl");

            if (accountsObj is IHTMLSelectElement accounts)
            {
                foreach (var option in accounts.options)
                {
                    if (option.selected)
                    {
                        var    utf8Bytes = Encoding.UTF8.GetBytes(option.text);
                        String ascii     = Encoding.ASCII.GetString(utf8Bytes);
                        var    ac        = ascii.TrimStart('?').TrimEnd('?').Split('-', '/');

                        if (ac.Length >= 2)
                        {
                            result = _accounts.Find(a => a.AccountNumber.Equals(ac[1]));
                        }
                    }
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: AccountScraper.cs プロジェクト: yuriykipnis/Fino
        private async Task <AccountBasic> GetSelectedAccount()
        {
            AccountBasic result = null;

            const string script = @"(function(){
                        var select = document.getElementById('ddlAccounts_m_ddl');
                        return select.options[select.selectedIndex].text;
                    })()";

            await Browser.EvaluateScriptAsync(script)
            .ContinueWith(res =>
            {
                if (!res.IsFaulted && res.Result.Result != null)
                {
                    var accountNumber = CommonScraper.ToUtf8((String)res.Result.Result);
                    var ac            = accountNumber.Split('-', '/');

                    if (ac.Length == 3)
                    {
                        var searchFor = $"{CommonScraper.IntParseSafe(ac[1])}/{CommonScraper.IntParseSafe(ac[2])}";
                        result        = _accounts.Find(a => a.AccountNumber.Equals(searchFor));
                    }
                }
            }, TaskScheduler.Default);

            return(result);
        }
コード例 #4
0
        private void SelectAccount(AccountBasic account)
        {
            HTMLDocument dom         = (HTMLDocument)_transactionsBrowser.Document;
            object       accountsObj = dom.getElementById("ddlAccounts_m_ddl");

            if (accountsObj is IHTMLSelectElement accounts)
            {
                foreach (var option in accounts.options)
                {
                    var    utf8bytes = Encoding.UTF8.GetBytes(option.text);
                    String ascii     = Encoding.ASCII.GetString(utf8bytes);
                    var    ac        = ascii.TrimStart('?').TrimEnd('?').Split('-', '/');

                    if (ac.Length >= 2 && ac[1] == account.AccountNumber)
                    {
                        option.SetAttribute("selected", "selected");
                        account.BranchNumber = Convert.ToInt32(ac[0]);
                        account.Label        = $"{ac[0]}-{ac[1]}";
                    }
                    else
                    {
                        option.RemoveAttribute("selected");
                    }
                }
                ((HTMLSelectElement)accounts).FireEvent("onchange");

                IHTMLElement btn = dom.getElementById("btnDisplayDates");
                btn?.click();
            }
        }
コード例 #5
0
ファイル: CommonScraper.cs プロジェクト: yuriykipnis/Fino
        protected async Task UpdateBalanceForSelectedAccount(AccountBasic selectedAccount)
        {
            const string script = @"(function(){
                        var balance = document.getElementById('lblBalancesVal').innerHTML;
                        return balance;
                    })()";

            await Browser.EvaluateScriptAsync(script)
            .ContinueWith(res =>
            {
                if (!res.IsFaulted && res.Result.Result != null)
                {
                    var balance             = CommonScraper.ToUtf8((String)res.Result.Result).TrimStart('₪');
                    selectedAccount.Balance = Convert.ToDecimal(balance);
                }
            }, TaskScheduler.Default);
        }
コード例 #6
0
ファイル: CommonScraper.cs プロジェクト: yuriykipnis/Fino
        protected async Task SelectAccount(AccountBasic setAccount, String selectorId)
        {
            string script = @"(function(){
                        var select = document.getElementById('" + selectorId + @"');
                        for ( var i = 0; i < select.options.length; i++ ) {
                           if (select[i].value != -1 ) {
                                var label = select[i].innerHTML;
                                var l = label.split('-');
                                var ll = l[1].split('/');
                                if (ll[0] == " + setAccount.AccountNumber.Split('/')[0] + @") {
                                    select.value = select[i].value;
                                }
                           }
                        }
                    })()";

            await Browser.EvaluateScriptAsync(script, TaskScheduler.Default);
        }
コード例 #7
0
        private async Task UpdateTransactionsForSelectedAccount(AccountBasic selectedAccount)
        {
            string script = @"(function(){
                        var table = document.getElementById('ctlActivityTable');
                        var result = [];
                        for (var i = 1, row; row = table.rows[i]; i++) {
                            var cells = row.cells;
                            result[i-1] = {};
                            result[i-1].paymentDate = cells[1].innerText;
                            result[i-1].description = cells[2].innerText;
                            result[i-1].supplierId = cells[3].innerText;

                            if (cells[4].innerText && cells[4].innerText.replace(/\s/g,'') !== '') {
                                result[i-1].type = 'expense';
                                result[i-1].amount = cells[4].innerText;
                            }
                            else if (cells[5].innerText && cells[5].innerText.replace(/\s/g,'') !== '') {
                                result[i-1].type = 'income';
                                result[i-1].amount = cells[5].innerText;
                            }                           
                            result[i-1].currentBalance = cells[6].innerText;
                        }

                        return JSON.stringify(result);
                    })()";

            await Browser.EvaluateScriptAsync(script)
            .ContinueWith(res =>
            {
                if (!res.IsFaulted && res.Result.Result != null)
                {
                    try
                    {
                        var result = JsonConvert.DeserializeObject <List <TransactionBasic> >(res.Result.Result.ToString());
                        selectedAccount.Transactions = result;
                    }
                    catch (Exception e)
                    {
                    }
                }
            }, TaskScheduler.Default);
        }
コード例 #8
0
        private async void LoadCompleted(object sender, LoadingStateChangedEventArgs e)
        {
            if (Browser.Address.Contains("eBank_ULI_Login.asp"))
            {
                if (e.IsLoading == false)
                {
                    Login();
                }
            }
            else if (Browser.Address.Contains("ebanking/SO/SPA.aspx"))
            {
                if (e.IsLoading == false)
                {
                    GoToCurrent(e);
                }
            }
            else if (Browser.Address.Contains("ebanking/Accounts/ExtendedActivity.aspx"))
            {
                if (e.IsLoading == false)
                {
                    if (_account == null)
                    {
                        _account = new AccountBasic {
                            AccountNumber = _accountName
                        };

                        await SelectAccount(_account, "ddlAccounts_m_ddl");
                        await SelectPeriod();
                        await SelectDates();
                        await RefreshAccountView();

                        return;
                    }

                    await UpdateTransactionsForSelectedAccount(_account);

                    Logout();
                    StreamOutput();
                }
            }
        }
コード例 #9
0
        private async void LoadCompleted(object sender, LoadingStateChangedEventArgs e)
        {
            if (Browser.Address.Contains("eBank_ULI_Login.asp"))
            {
                if (e.IsLoading == false)
                {
                    Login();
                }
            }
            else if (Browser.Address.Contains("ebanking/SO/SPA.aspx"))
            {
                if (e.IsLoading == false)
                {
                    GoToLoans(e);
                }
            }
            else if (Browser.Address.Contains("ebanking/LoanAndMortgages/DisplayLoansAndMortgagesSummary.aspx"))
            {
                if (e.IsLoading == false)
                {
                    if (_account == null)
                    {
                        _account = new AccountBasic
                        {
                            AccountNumber = _accountName
                        };
                        await SelectAccount(_account, "ddlClientNumber_m_ddl");
                        await RefreshAccountView();

                        Thread.Sleep(500);

                        _loans = await UpdateLinkToLoansForSelectedAccount(_account);

                        if (_loans.Any())
                        {
                            SelectNextLoan();
                            return;
                        }

                        Logout();
                        StreamOutput();
                    }
                }
            }
            else if (Browser.Address.Contains("ebanking/LoanAndMortgages/DisplayLoanActivity.aspx"))
            {
                if (e.IsLoading == false)
                {
                    await UpdateAccountByLoan();

                    if (_loans.Any())
                    {
                        SelectNextLoan();
                        return;
                    }

                    Logout();
                    StreamOutput();
                }
            }
        }