public void Add(YodleeTransactionModel transaction) { var amount = transaction.transactionAmount.HasValue ? transaction.transactionAmount.Value : 0; //var catType = transaction.transactionCategory.Type; var catName = string.IsNullOrEmpty(transaction.ezbobSubGroup) ? transaction.ezbobGroup : transaction.ezbobSubGroup; var isCredit = transaction.transactionBaseType == "credit"; var date = transaction.transactionDate; var cat = string.Format("{0}{1}{2}", transaction.ezbobGroupPriority, Minor, catName); var major = string.Format("{0}{1}{2}", transaction.ezbobGroupPriority, Major, transaction.ezbobGroup); string yearmonth = (date.Year * 100 + date.Month).ToString(); //var runningBalance = transaction.runningBalance.HasValue ? transaction.runningBalance.Value: 0; Add(cat, amount, isCredit, yearmonth); Add(major, amount, isCredit, yearmonth); UpdateMinMaxDay(yearmonth, date); Add(cat, amount, isCredit, TotalColumn); Add(major, amount, isCredit, TotalColumn); //Calc Total Row Add(isCredit ? string.Format("{0}{1}", TotalCredit, TotalIncomeCat) : string.Format("{0}{1}", TotalDedit, TotalExpensesCat), amount, isCredit, yearmonth); Add(isCredit ? string.Format("{0}{1}", TotalCredit, TotalIncomeCat) : string.Format("{0}{1}", TotalDedit, TotalExpensesCat), amount, isCredit, TotalColumn); //Calc Num Of Transactions Row Add(isCredit ? string.Format("{0}{1}", NumTransCredit, NumOfTransactionsCat) : string.Format("{0}{1}", NumTransDedit, NumOfTransactionsCat), 1, true, yearmonth); Add(isCredit ? string.Format("{0}{1}", NumTransCredit, NumOfTransactionsCat) : string.Format("{0}{1}", NumTransDedit, NumOfTransactionsCat), 1, true, TotalColumn); var monthAgo = DateTime.Today.AddMonths(-1); if (date >= monthAgo) { yodlee.MonthInPayments += amount; } }
public void Add(YodleeTransactionModel transaction) { foreach (var word in _yodleeSearchWords) { if (!string.IsNullOrEmpty(transaction.description) && transaction.description.ToLowerInvariant().Contains(word.Substring(1).ToLowerInvariant())) { var amount = transaction.transactionAmount.HasValue ? transaction.transactionAmount.Value : 0; if (transaction.transactionBaseType == "credit") { Add(word, "Trans Income", amount); Add(word, "Trans Income #", 1); } else { Add(word, "Trans Expense", amount); Add(word, "Trans Expense #", 1); } } } }
public void Add(YodleeTransactionModel transaction, string accountNum) { var date = transaction.transactionDate; var runningBalance = transaction.runningBalance.HasValue ? transaction.runningBalance.Value : 0; AddRunningBalance(runningBalance, date, accountNum); if (_firstTrans > date) { _firstTrans = date; } if (_lastTrans == DateTime.Today) { _lastTrans = yodlee.AsOfDate; } if (_lastTrans < date) { _lastTrans = date; } }
public YodleeModel BuildYodlee(MP_CustomerMarketPlace mp, DateTime?history) { DateTime now = history ?? DateTime.UtcNow; YodleeOrderDictionary yodleeData = null; var directors = new List <string>(); _timeElapsed = new List <System.Tuple <string, double> >(); Stopwatch sw = Stopwatch.StartNew(); if (mp.Marketplace.InternalId == new YodleeServiceInfo().InternalId) { var ddh = new DatabaseDataHelper(_session); yodleeData = ddh.GetAllYodleeOrdersData(now, mp, false, out directors); } // if sw.Stop(); _timeElapsed.Add(new System.Tuple <string, double>("GetAllYodleeOrdersData", sw.Elapsed.TotalMilliseconds)); if (yodleeData == null) { Log.Debug("Yodlee model building complete for marketplace {0}: no data.", mp.Stringify()); return(null); } // if var model = new YodleeModel(); sw.Restart(); var ruleModelBuilder = new YodleeRuleModelBuilder(_session); model.RuleModel = ruleModelBuilder.Build(); sw.Stop(); _timeElapsed.Add(new System.Tuple <string, double>("YodleeRuleModel", sw.Elapsed.TotalMilliseconds)); model.BankStatementDataModel = new BankStatementDataModel(); var banks = new List <YodleeBankModel>(); var yearAgo = new DateTime(now.Year, now.Month, 1).AddYears(-1); Log.Debug("Yodlee model is being built for marketplace {0}...", mp.Stringify()); sw.Restart(); foreach (var bank in yodleeData.Data.Keys) { Log.Debug("Yodlee model is being built for marketplace {0}, bank {1}...", mp.Stringify(), bank.customName); double?availableBalance = CurrencyXchg(bank.availableBalance, bank.asOfDate.date); double?currentBalance = CurrencyXchg(bank.currentBalance, bank.asOfDate.date); double?overdraftProtection = CurrencyXchg(bank.overdraftProtection, bank.asOfDate.date); var yodleeBankModel = new YodleeBankModel { isDeleted = bank.isDeleted != 0, accountNumber = bank.accountNumber, accountHolder = bank.accountHolder, accountType = bank.acctType, availableBalance = availableBalance, currentBalance = currentBalance, accountName = bank.accountName, routingNumber = bank.routingNumber, asOfDate = bank.asOfDate.date, overdraftProtection = overdraftProtection, }; var transactions = new List <YodleeTransactionModel>(); Log.Debug("Yodlee model is being built for marketplace {0}, bank {1}, going over transactions...", mp.Stringify(), bank.customName); foreach (var transaction in yodleeData.Data[bank]) { DateTime?oDate = transaction.postDate.date ?? transaction.transactionDate.date; if (!oDate.HasValue || oDate.Value < yearAgo) { continue; //take only 12 month of data } double?transactionAmount = CurrencyXchg(transaction.transactionAmount, oDate); double?runningBalance = CurrencyXchg(transaction.runningBalance, oDate); var yodleeTransactionModel = new YodleeTransactionModel { transactionBaseType = transaction.transactionBaseType, transactionType = transaction.transactionType, transactionDate = (transaction.postDate.date ?? transaction.transactionDate.date).Value, categoryName = transaction.memo, categoryType = transaction.userDescription, transactionAmount = transactionAmount, description = transaction.description, runningBalance = runningBalance, transactionStatus = transaction.transactionStatus, bankTransactionId = transaction.bankTransactionId, ezbobGroup = transaction.siteCategory, ezbobSubGroup = transaction.siteCategoryType, ezbobGroupPriority = transaction.customCategoryId ?? 0 }; transactions.Add(yodleeTransactionModel); } // for each transaction Log.Debug("Yodlee model is being built for marketplace {0}, bank {1}, done going over transactions.", mp.Stringify(), bank.customName); yodleeBankModel.transactions = transactions.OrderByDescending(t => t.transactionDate).ToList(); banks.Add(yodleeBankModel); Log.Debug("Yodlee model is being built for marketplace {0}, done with bank {1}.", mp.Stringify(), bank.customName); } // for each bank model.banks = banks; sw.Stop(); _timeElapsed.Add(new System.Tuple <string, double>("YodleeTransactionsModel", sw.Elapsed.TotalMilliseconds)); Log.Debug("Yodlee model is being built for marketplace {0}, done with banks.", mp.Stringify()); YodleeSearchWordsModel yodleeSearchWordsModel; YodleeRunningBalanceModel yodleeRunningBalanceModel; sw.Restart(); model.CashFlowReportModel = CreateYodleeCashFlowModel(model, mp.Id, mp.Customer, directors, out yodleeSearchWordsModel, out yodleeRunningBalanceModel); model.SearchWordsModel = yodleeSearchWordsModel; model.RunningBalanceModel = yodleeRunningBalanceModel; sw.Stop(); _timeElapsed.Add(new System.Tuple <string, double>("YodleeCashFlowModel", sw.Elapsed.TotalMilliseconds)); Log.Debug("Yodlee model is ready for marketplace {0}.", mp.Stringify()); LogElapsedTimes(mp.Id, mp.Customer.Id); return(model); }