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); }
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); }
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); }
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(); } }
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); }
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); }
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); }
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(); } } }
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(); } } }