private async Task <List <BankTransactionData> > Convert2BankTransactionData(OutRobinData <RhTransaction> datas) { List <BankTransactionData> output = new List <BankTransactionData>(); foreach (RhTransaction data in datas.Data) { string accountID = UtilityHandler.GetIdFromUrl(data.account); RhInstrument inst = await InstrumentLookup.GetRhInstrument(data.instrument); decimal valueAmt = UtilityHandler.GetDecimalNumber(data?.executed_notional?.amount); if (data.state == "cancelled") { ShowMessage($"{inst.Symbol} [{data.side.ToUpper()}] - {inst.SimpleName}"); BankTransactionData d = new BankTransactionData() { BankAccount_ID = accountID, TransAction_DATE = UtilityHandler.GetDateValue(data.created_at), TransAction_CODE = UtilityHandler.GetString(data.side).ToUpper(), Settlement_DATE = UtilityHandler.GetDateValue(data.updated_at), Trade_CODE = UtilityHandler.GetString(inst.Symbol), Trade_NAME = UtilityHandler.GetString(inst.SimpleName), Instrument_ID = UtilityHandler.GetString(inst.Id), Trade_ID = string.Empty, Shares_CNT = UtilityHandler.GetDecimalNumber(data.quantity), CostBasis_AMNT = UtilityHandler.GetDecimalNumber(data.price), Value_AMNT = valueAmt, Type_CODE = UtilityHandler.GetString(data.type), GoodUntil_CODE = UtilityHandler.GetString(data.time_in_force), State_CODE = UtilityHandler.GetString(data.state), Export_DATE = DateTime.Today }; output.Add(d); continue; } if (data.executions is null) { continue; } foreach (Execution e in data.executions) { ShowMessage($"{inst.Symbol} [{data.side.ToUpper()}] - {inst.SimpleName}"); BankTransactionData d = new BankTransactionData() { BankAccount_ID = accountID, TransAction_DATE = data.executions[0].timestamp, TransAction_CODE = UtilityHandler.GetString(data.side).ToUpper(), Settlement_DATE = UtilityHandler.GetDateValue(data.executions[0].settlement_date), Trade_CODE = UtilityHandler.GetString(inst.Symbol), Trade_NAME = UtilityHandler.GetString(inst.SimpleName), Instrument_ID = UtilityHandler.GetString(inst.Id), Trade_ID = UtilityHandler.GetString(e.id), Shares_CNT = UtilityHandler.GetDecimalNumber(e.quantity), CostBasis_AMNT = UtilityHandler.GetDecimalNumber(e.price), Value_AMNT = valueAmt, Type_CODE = UtilityHandler.GetString(data.type), GoodUntil_CODE = UtilityHandler.GetString(data.time_in_force), State_CODE = UtilityHandler.GetString(data.state), Export_DATE = DateTime.Today }; output.Add(d); } } int seqNumb = output.Count; foreach (BankTransactionData row in output) { row.Seq_NUMB = seqNumb; seqNumb--; } return(output); }
/// <summary> /// Displays the item information and item data information /// for the given bank itemSummary. /// </summary> /// <param name="itemSummary">an itemSummary whose containerType is 'bank'</param> public void displayBankDataForItem(ItemSummary itemSummary) { System.Console.WriteLine(""); String containerType = itemSummary.contentServiceInfo.containerInfo.containerName; if (!containerType.Equals("bank")) { throw new Exception("displayBankDataForItem called with invalid container type" + containerType); } DisplayItemInfo displayItemInfo = new DisplayItemInfo(); displayItemInfo.displayItemSummaryInfo(itemSummary); // Get ItemData ItemData1 itemData = itemSummary.itemData; if (itemData == null) { System.Console.WriteLine("\tItemData is null"); } else { object[] accounts = itemData.accounts; if (accounts == null || accounts.Length == 0) { System.Console.WriteLine("\tNo accounts"); } else { for (int i = 0; i < accounts.Length; i++) { System.Console.WriteLine("\n\t\t**BankData**"); BankData bankData = (BankData)accounts[i]; System.Console.WriteLine("\t\tBank Account Name: {0}", bankData.accountName); System.Console.WriteLine("\t\tBank Account Cust Description: {0}", bankData.customDescription); System.Console.WriteLine("\t\tBank Account Identifier: {0}", bankData.bankAccountId); System.Console.WriteLine("\t\tBank Account Balance: {0}", bankData.availableBalance.amount); System.Console.WriteLine("\t\tBank Current Balance: {0}", bankData.currentBalance.amount); System.Console.WriteLine("\t\tBank Current Acct Type: {0}", bankData.acctType); System.Console.WriteLine("\t\tBank Current As of Date: {0}", bankData.asOfDate.date); // BankTransactionData object[] bankTransactions = bankData.bankTransactions; if (bankTransactions == null || bankTransactions.Length == 0) { System.Console.WriteLine("\t\tNo bank transactions"); } else { System.Console.WriteLine("\n\t\t**BankTransactionData**"); for (int j = 0; j < bankTransactions.Length; j++) { BankTransactionData transactionData = (BankTransactionData)bankTransactions[j]; System.Console.WriteLine("\t\t\tTransaction Id: {0}", transactionData.bankTransactionId); System.Console.WriteLine("\t\t\tTransaction Description: {0}", transactionData.description); System.Console.WriteLine("\t\t\tTransaction Amount: {0}", transactionData.transactionAmount.amount); System.Console.WriteLine("\t\t\tTransaction Base Type: {0}", transactionData.transactionBaseType); System.Console.WriteLine("\t\t\tCategory: {0}", transactionData.category); System.Console.WriteLine(""); } } System.Console.WriteLine(""); } } } // Get AccountHistory object[] acctHistories = itemData.accountHistory; if (acctHistories == null || acctHistories.Length == 0) { System.Console.WriteLine("\tNo Account History"); } else { System.Console.WriteLine("\n\t**Account History**"); for (int i = 0; i < acctHistories.Length; i++) { AccountHistory acctHistory = (AccountHistory)acctHistories[i]; System.Console.WriteLine("\tAccount ID: {0}", acctHistory.accountId); // Get History object[] histories = acctHistory.history; if (histories == null || histories.Length == 0) { System.Console.WriteLine("\t\tNo History"); } else { System.Console.WriteLine("\t\t**History**"); for (int j = 0; j < histories.Length; j++) { BankData bankData = (BankData)histories[j]; System.Console.WriteLine("\t\tBank Account Name: {0}", bankData.accountName); System.Console.WriteLine("\t\tBank Account Cust Description: {0}", bankData.customDescription); System.Console.WriteLine("\t\tBank Account Identifier: {0}", bankData.bankAccountId); System.Console.WriteLine("\t\tBank Account Balance: {0}", bankData.availableBalance.amount); System.Console.WriteLine("\t\tBank Current Balance: {0}", bankData.currentBalance.amount); System.Console.WriteLine("\t\tBank Current Acct Type: {0}", bankData.acctType); System.Console.WriteLine("\t\tBank Current As of Date: {0}", bankData.asOfDate.date); System.Console.WriteLine("\t\tLast Updated: {0}\n", UtcToDateTime(bankData.lastUpdated.Value)); } } } } }
private void GetClaimLinksDataForTransaction(int trxId, IWebElement trxWE, BankTransactionData transaction) { //Claims Links section title is only present on certain transactions try { transaction.ClaimLinkLabel = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; } catch (Exception) { transaction.ClaimLinkLabel = ""; } //CLAIM LINKS - optional - only present if claims linked to the check try { //claim link data labels transaction.ClaimLinkNumberLabel = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NUMBER_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkNameLabel = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NAME_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkCodeLabel = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_CODE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkBalanceLabel = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_BALANCE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; } catch (Exception) { transaction.ClaimLinkNumberLabel = ""; transaction.ClaimLinkNameLabel = ""; transaction.ClaimLinkCodeLabel = ""; transaction.ClaimLinkBalanceLabel = ""; } //claim # 1 values try { transaction.ClaimLinkName1 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NAME_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkName1 = transaction.ClaimLinkName1.TrimStart().TrimEnd(); transaction.ClaimLinkBalance1 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_BALANCE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkBalance1 = transaction.ClaimLinkBalance1.TrimStart().TrimEnd(); //claim # could be empty try { transaction.ClaimLinkNumber1 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NUMBER_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkNumber1 = transaction.ClaimLinkNumber1.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkNumber1 = ""; } //claim CODE could be empty try { transaction.ClaimLinkCode1 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_CODE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkCode1 = transaction.ClaimLinkCode1.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkCode1 = ""; } } catch (Exception) { transaction.ClaimLinkNumber1 = ""; transaction.ClaimLinkName1 = ""; transaction.ClaimLinkCode1 = ""; transaction.ClaimLinkBalance1 = ""; } //claim # 2 can be present or not - max claim links is 2 if (transaction.ClaimLinkName1 != "") { try { transaction.ClaimLinkName2 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NAME_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkName2 = transaction.ClaimLinkName2.TrimStart().TrimEnd(); transaction.ClaimLinkBalance2 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_BALANCE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkBalance2 = transaction.ClaimLinkBalance2.TrimStart().TrimEnd(); //Claim # can be empty try { transaction.ClaimLinkNumber2 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_NUMBER_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkNumber2 = transaction.ClaimLinkNumber2.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkNumber2 = ""; } //Claim CODE can be empty try { transaction.ClaimLinkCode2 = trxWE.FindElement(By.XPath(String.Format(TRX_CLAIM_LINK_CODE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkCode2 = transaction.ClaimLinkCode2.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkNumber2 = ""; } } catch (Exception) { //do nothing, we could have no second claim link on the transaction transaction.ClaimLinkNumber2 = ""; transaction.ClaimLinkName2 = ""; transaction.ClaimLinkCode2 = ""; transaction.ClaimLinkBalance2 = ""; } } else { transaction.ClaimLinkName2 = ""; transaction.ClaimLinkBalance2 = ""; transaction.ClaimLinkNumber2 = ""; } }
private void GetAssetLinksDataForTransaction(int trxId, IWebElement trxWE, BankTransactionData transaction) { //Assets Links section title is only present on certain transactions try { transaction.ClaimLinkLabel = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; } catch (Exception) { transaction.ClaimLinkLabel = ""; } //The rest only appears is there are links for the deposit try { //asset link data labels transaction.ClaimLinkNumberLabel = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NUMBER_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkNameLabel = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NAME_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkCodeLabel = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_CODE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.ClaimLinkBalanceLabel = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_BALANCE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; } catch (Exception) { transaction.ClaimLinkNumberLabel = ""; transaction.ClaimLinkNameLabel = ""; transaction.ClaimLinkCodeLabel = ""; transaction.ClaimLinkBalanceLabel = ""; } //asset # 1 values try { transaction.ClaimLinkName1 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NAME_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkName1 = transaction.ClaimLinkName1.TrimStart().TrimEnd(); transaction.ClaimLinkBalance1 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_BALANCE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkBalance1 = transaction.ClaimLinkBalance1.TrimStart().TrimEnd(); //asset # could be empty try { transaction.ClaimLinkNumber1 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NUMBER_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkNumber1 = transaction.ClaimLinkNumber1.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkNumber1 = ""; } //asset CODE could be empty try { transaction.ClaimLinkCode1 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_CODE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkCode1 = transaction.ClaimLinkCode1.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkCode1 = ""; } } catch (Exception) { transaction.ClaimLinkName1 = ""; transaction.ClaimLinkCode1 = ""; transaction.ClaimLinkBalance1 = ""; transaction.ClaimLinkNumber1 = ""; } //asset # 2 can be present or not - max asset links is 2 if (transaction.ClaimLinkName1 != "") { try { transaction.ClaimLinkName2 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NAME_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkName2 = transaction.ClaimLinkName2.TrimStart().TrimEnd(); transaction.ClaimLinkBalance2 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_BALANCE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkBalance2 = transaction.ClaimLinkBalance2.TrimStart().TrimEnd(); //Claim # can be empty try { transaction.ClaimLinkNumber2 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_NUMBER_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 3))).Text; transaction.ClaimLinkNumber2 = transaction.ClaimLinkNumber2.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkNumber2 = ""; } //asset CODE could be empty try { transaction.ClaimLinkCode1 = trxWE.FindElement(By.XPath(String.Format(TRX_ASSET_LINK_CODE_VALUE_BY_ID_AND_POSITION_LOCATOR_TEMPLATE, trxId, 2))).Text; transaction.ClaimLinkCode1 = transaction.ClaimLinkCode1.TrimStart().TrimEnd(); } catch (Exception) { transaction.ClaimLinkCode1 = ""; } } catch (Exception) { transaction.ClaimLinkName2 = ""; transaction.ClaimLinkCode2 = ""; transaction.ClaimLinkBalance2 = ""; transaction.ClaimLinkNumber2 = ""; } } else { transaction.ClaimLinkName2 = ""; transaction.ClaimLinkCode2 = ""; transaction.ClaimLinkBalance2 = ""; transaction.ClaimLinkNumber2 = ""; } }
private BankTransactionData CreateBankTrxFromWebElement(IWebElement trxWE) { BankTransactionData transaction = new BankTransactionData(); //get claim id to replace on id locators string trxNumberId = trxWE.FindElement(By.XPath(".//p[contains(@id,'transactionSerialNumber-')]")).GetAttribute("id"); trxNumberId = trxNumberId.Replace("transactionSerialNumber-", ""); int trxId = Convert.ToInt32(trxNumberId); transaction.Id = trxId; TestsLogger.Debug("Getting data from UI for Transaction with Id=" + trxId); //Corner Tag color IWebElement cornerTagWE = trxWE.FindElement(By.Id(String.Format(TRX_CORNER_TAG_BY_ID_LOCATOR_TEMPLATE, trxId))); transaction.CornerTagColor = this.GetColorFromColorCode(cornerTagWE.FindElement(By.TagName("polygon")).GetCssValue("fill")); //TRX Type Box transaction.TypeBoxColor = this.GetColorFromColorCode(trxWE.FindElement(By.Id(String.Format(TRX_TYPE_BOX_BY_ID_LOCATOR_TEMPLATE, trxId))).GetCssValue("background-color")); transaction.TransactionNumber = trxWE.FindElement(By.Id(String.Format(TRX_NUMBER_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Name transaction.Name = trxWE.FindElement(By.Id(String.Format(TRX_NAME_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Description transaction.Description = trxWE.FindElement(By.Id(String.Format(TRX_DESCRIPTION_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //TRX Date transaction.TrxDateLabel = trxWE.FindElement(By.Id(String.Format(TRX_DATE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.TrxDate = trxWE.FindElement(By.Id(String.Format(TRX_DATE_VALUE_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Cleared Date transaction.ClearedDateLabel = trxWE.FindElement(By.Id(String.Format(TRX_CLEARED_DATE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; IWebElement clearedDateValueWE = trxWE.FindElement(By.Id(String.Format(TRX_CLEARED_DATE_VALUE_BY_ID_LOCATOR_TEMPLATE, trxId))); transaction.ClearedDate = clearedDateValueWE.Text; transaction.ClaredDateColor = this.GetColorFromColorCode(clearedDateValueWE.GetCssValue("color")); //Code transaction.CodeLabel = trxWE.FindElement(By.Id(String.Format(TRX_CODE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.Code = trxWE.FindElement(By.XPath(String.Format(TRX_CODE_VALUE_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Amount transaction.AmountLabel = trxWE.FindElement(By.Id(String.Format(TRX_AMOUNT_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.AmountValue = trxWE.FindElement(By.Id(String.Format(TRX_AMOUNT_VALUE_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Balance transaction.BalanceLabel = trxWE.FindElement(By.Id(String.Format(TRX_BALANCE_LABEL_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; transaction.BalanceValue = trxWE.FindElement(By.Id(String.Format(TRX_BALANCE_VALUE_BY_ID_LOCATOR_TEMPLATE, trxId))).Text; //Set claim links data for Check Trx if (transaction.TransactionNumber.Contains("Check #")) { this.GetClaimLinksDataForTransaction(trxId, trxWE, transaction); } else if (transaction.TransactionNumber.Contains("Deposit")) { //Set asset links data for Deposit Trx this.GetAssetLinksDataForTransaction(trxId, trxWE, transaction); } return(transaction); }
public YodleeTransactionItem(BankTransactionData data) { _Data = data; }