public static BankData FromYodleeOrderItem(MP_YodleeOrderItem item) { return(new BankData { acctType = item.acctType, srcElementId = item.srcElementId, bankAccountId = item.bankAccountId, isDeleted = item.isDeleted, lastUpdated = item.lastUpdated, accountNumber = item.accountNumber, accountHolder = item.accountHolder, availableBalance = new YMoney { amount = item.availableBalance, currencyCode = item.availableBalanceCurrency, }, currentBalance = new YMoney { amount = item.currentBalance, currencyCode = item.currentBalanceCurrency, }, overdraftProtection = new YMoney { amount = item.overdraftProtection, currencyCode = item.overdraftProtectionCurrency, }, accountName = item.accountName, routingNumber = item.routingNumber, asOfDate = new YDate { date = item.asOfDate, }, secondaryAccountHolderName = item.secondaryAccountHolderName, }); } // FromYodleeOrderItem
} // HasYodleeOrders public void StoreYodleeOrdersData( IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, YodleeOrderDictionary ordersData, MP_CustomerMarketplaceUpdatingHistory historyRecord ) { MP_CustomerMarketPlace customerMarketPlace = GetCustomerMarketPlace(databaseCustomerMarketPlace.Id); if (ordersData == null) { return; } //don't store parsed data twice if (databaseCustomerMarketPlace.DisplayName == "ParsedBank") { if (customerMarketPlace.YodleeOrders.Any() && customerMarketPlace.YodleeOrders.SelectMany(x => x.OrderItems) .Any(x => x.accountName == ordersData.Data.Keys.First() .accountName)) { _Log.InfoFormat("ParsedBank same file won't be stored in db"); return; } } DateTime submittedDate = DateTime.UtcNow; var mpOrder = new MP_YodleeOrder { CustomerMarketPlace = customerMarketPlace, Created = submittedDate, HistoryRecord = historyRecord }; Customer customer = databaseCustomerMarketPlace.Customer; int customerId = customer.Id; string customerSurName = customer.PersonalInfo == null ? "" : customer.PersonalInfo.Surname; List <MP_YodleeGroup> yodleeGroups = new YodleeGroupRepository(this._session).GetAll().ToList(); List <MP_YodleeGroupRuleMap> yodleeGroupRules = new YodleeGroupRuleMapRepository(this._session).GetAll().ToList(); var directors = GetExperianDirectors(customer); foreach (var item in ordersData.Data.Keys) { var avaliableBalance = CurrencyXchg(item.availableBalance, item.asOfDate); var currentBalance = CurrencyXchg(item.currentBalance, item.asOfDate); var overdraftProtection = CurrencyXchg(item.overdraftProtection, item.asOfDate); var mpOrderItem = new MP_YodleeOrderItem { Order = mpOrder, isSeidFromDataSource = item.isSeidFromDataSource, isSeidMod = item.isSeidMod, acctTypeId = item.acctTypeId, acctType = item.acctType, localizedAcctType = item.localizedAcctType, srcElementId = item.srcElementId, bankAccountId = item.bankAccountId, isDeleted = item.isDeleted, lastUpdated = item.lastUpdated, hasDetails = item.hasDetails, interestRate = item.interestRate, accountNumber = item.accountNumber, link = item.link, accountHolder = item.accountHolder, tranListToDate = (item.tranListToDate != null && item.tranListToDate.dateSpecified) ? item.tranListFromDate.date : null, tranListFromDate = (item.tranListFromDate != null && item.tranListFromDate.dateSpecified) ? item.tranListFromDate.date : null, availableBalance = avaliableBalance != null ? avaliableBalance.Value : (double?)null, availableBalanceCurrency = avaliableBalance != null ? avaliableBalance.CurrencyCode : null, currentBalance = currentBalance != null ? currentBalance.Value : (double?)null, currentBalanceCurrency = currentBalance != null ? currentBalance.CurrencyCode : null, overdraftProtection = overdraftProtection != null ? overdraftProtection.Value : (double?)null, overdraftProtectionCurrency = overdraftProtection != null ? overdraftProtection.CurrencyCode : null, accountName = item.accountName, routingNumber = item.routingNumber, maturityDate = (item.maturityDate != null && item.maturityDate.dateSpecified) ? item.maturityDate.date : null, asOfDate = (item.asOfDate != null && item.asOfDate.dateSpecified) ? item.asOfDate.date : mpOrder.Created, isPaperlessStmtOn = item.isPaperlessStmtOn, siteAccountStatus = item.siteAccountStatus.ToString(), accountClassification = item.accountClassification.ToString(), created = item.created, secondaryAccountHolderName = item.secondaryAccountHolderName, accountOpenDate = (item.accountOpenDate != null && item.accountOpenDate.dateSpecified) ? item.accountOpenDate.date : null, accountCloseDate = (item.accountCloseDate != null && item.accountCloseDate.dateSpecified) ? item.accountCloseDate.date : null, itemAccountId = item.itemAccountId }; foreach (var bankTransaction in ordersData.Data[item]) { var date = bankTransaction.transactionDate; if (bankTransaction.transactionDate == null || !bankTransaction.transactionDate.date.HasValue) { date = bankTransaction.postDate; } var runningBalance = CurrencyXchg(bankTransaction.runningBalance, date); var calcRunningBalance = CurrencyXchg(bankTransaction.calcRunningBalance, date); var transactionAmount = CurrencyXchg(bankTransaction.transactionAmount, date); var orderBankTransaction = new MP_YodleeOrderItemBankTransaction { YodleeOrderItem = mpOrderItem, isSeidFromDataSource = bankTransaction.isSeidFromDataSource, isSeidMod = bankTransaction.isSeidMod, srcElementId = bankTransaction.srcElementId, transactionTypeId = bankTransaction.transactionTypeId, transactionType = bankTransaction.transactionType, transactionStatusId = bankTransaction.transactionStatusId, transactionStatus = bankTransaction.transactionStatus, transactionBaseTypeId = bankTransaction.transactionBaseTypeId, transactionBaseType = bankTransaction.transactionBaseType, categoryId = bankTransaction.categoryId, bankTransactionId = bankTransaction.bankTransactionId, bankAccountId = bankTransaction.bankAccountId, bankStatementId = bankTransaction.bankStatementId, isDeleted = bankTransaction.isDeleted, lastUpdated = bankTransaction.lastUpdated, hasDetails = bankTransaction.hasDetails, transactionId = bankTransaction.transactionId, transactionCategory = this.yodleeTransactionCategoriesRepository.GetYodleeTransactionCategoryByCategoryId( bankTransaction.transactionCategoryId), classUpdationSource = bankTransaction.classUpdationSource, lastCategorised = bankTransaction.lastCategorised, transactionDate = (bankTransaction.transactionDate != null && bankTransaction.transactionDate.dateSpecified) ? bankTransaction.transactionDate.date : null, prevLastCategorised = bankTransaction.prevLastCategorised, runningBalance = runningBalance != null ? runningBalance.Value : (double?)null, runningBalanceCurrency = runningBalance != null ? runningBalance.CurrencyCode : null, categorisationSourceId = bankTransaction.categorisationSourceId, plainTextDescription = bankTransaction.plainTextDescription, calcRunningBalance = calcRunningBalance != null ? calcRunningBalance.Value : (double?)null, calcRunningBalanceCurrency = calcRunningBalance != null ? calcRunningBalance.CurrencyCode : null, category = bankTransaction.category, link = bankTransaction.link, postDate = (bankTransaction.postDate != null && bankTransaction.postDate.dateSpecified) ? bankTransaction.postDate.date : null, prevTransactionCategoryId = bankTransaction.prevTransactionCategoryId, descriptionViewPref = bankTransaction.descriptionViewPref, prevCategorisationSourceId = bankTransaction.prevCategorisationSourceId, transactionAmount = transactionAmount != null ? transactionAmount.Value : (double?)null, transactionAmountCurrency = transactionAmount != null ? transactionAmount.CurrencyCode : null, checkNumber = bankTransaction.checkNumber, description = bankTransaction.description, categorizationKeyword = bankTransaction.categorizationKeyword, ezbobCategory = CategorizeTransaction( yodleeGroups, yodleeGroupRules, bankTransaction.description, bankTransaction.transactionBaseType, transactionAmount != null ? (int)transactionAmount.Value : 0, customerId, customerSurName, directors) }; mpOrderItem.OrderItemBankTransactions.Add(orderBankTransaction); } mpOrder.OrderItems.Add(mpOrderItem); } customerMarketPlace.YodleeOrders.Add(mpOrder); this._CustomerMarketplaceRepository.Update(customerMarketPlace); this._session.Flush(); } // StoreYodleeOrdersData