/// <summary> /// Run /// </summary> /// <param name="parameters"></param> /// <param name="symbolList"></param> /// <returns></returns> public ResultSetListReinvestment FindBySymbol(CompounderQueryParams parameters, List <string> symbolList) { ResultSetListReinvestment resultSetList = null; QueryFactory queryFactory = new QueryFactory(DataContext.ConnectionString); var dates = FmpHelper.BuildDatesList(parameters.YearFrom, parameters.YearTo, parameters.Dates); var command = DbCommands.FindBySymbol(DataContext.Database.GetDbConnection(), Sql.FindBySymbol(symbolList, dates), symbolList, dates); var queryAsEnumerable = QueryAsEnumerable(command, ResultSetFunctions.FindBySymbol).ToList(); queryAsEnumerable = AddHistoryData(queryAsEnumerable, parameters, queryFactory.RoeHistoryQuery, a => a.RoeHistory); queryAsEnumerable = AddHistoryData(queryAsEnumerable, parameters, queryFactory.RevenueHistoryQuery, a => a.RevenueHistory); queryAsEnumerable = AddHistoryData(queryAsEnumerable, parameters, queryFactory.EpsHistoryQuery, a => a.EpsHistory); queryAsEnumerable = AdjustToGrowthKoef(queryAsEnumerable, parameters.RoeGrowthKoef, r => r.RoeHistory); queryAsEnumerable = AdjustToGrowthKoef(queryAsEnumerable, parameters.RevenueGrowthKoef, r => r.RevenueHistory); queryAsEnumerable = AdjustToGrowthKoef(queryAsEnumerable, parameters.EpsGrowthKoef, r => r.EpsHistory); List <ResultSetReinvestment> listOfResultSets = queryAsEnumerable.ToList(); resultSetList = new ResultSetListReinvestment(listOfResultSets); resultSetList.CountTotal = queryAsEnumerable.Count(); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.ReinvestmentHistoryQuery, a => a.ReinvestmentHistory); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.IncrementalRoeQuery, a => a.IncrementalRoe); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.OperatingIncomeHistoryQuery, a => a.OperatingIncome); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.CashConversionQuery, a => a.CashConversionHistory); resultSetList = AddCompanyName(resultSetList); resultSetList = AddDebtEquityIncome(resultSetList); return(resultSetList); }
/// <summary> /// AddHistoryData /// </summary> /// <param name="inputResultSetList"></param> /// <param name="parameters"></param> /// <param name="query"></param> /// <param name="funcAttributeToSet"></param> /// <returns></returns> private ResultSetListReinvestment AddHistoryData(ResultSetListReinvestment inputResultSetList, HistoryQueryParams parameters, HistoryQuery query, Func <ResultSetReinvestment, List <double> > funcAttributeToSet) { for (int i = 0; i < inputResultSetList.ResultSets.Count(); i++) { foreach (string dateParam in parameters.Dates) { string date = parameters.YearFrom.ToString() + dateParam[4..];
/// <summary> /// Run /// </summary> /// <param name="parameters"></param> /// <returns></returns> public ResultSetListReinvestment Run(CompounderQueryParams parameters) { ResultSetListReinvestment resultSetList = null; QueryFactory queryFactory = new QueryFactory(DataContext.ConnectionString); var p = parameters; var dates = FmpHelper.BuildDatesList(parameters.YearFrom, parameters.YearTo, parameters.Dates); var command = DbCommands.Compounder(DataContext.Database.GetDbConnection(), Sql.Compounder(parameters, dates), parameters, dates); var queryAsEnumerable = QueryAsEnumerable(command, ResultSetFunctions.Compounder); if (queryAsEnumerable.Count() > parameters.MaxResultCount) { return(new ResultSetListReinvestment(new List <ResultSetReinvestment>()) { CountTotal = queryAsEnumerable.Count() }); } var queryAsEnumerableList = queryAsEnumerable.ToList(); queryAsEnumerableList = AddHistoryData(queryAsEnumerableList, parameters, queryFactory.RoeHistoryQuery, a => a.RoeHistory); queryAsEnumerableList = AddHistoryData(queryAsEnumerableList, parameters, queryFactory.RevenueHistoryQuery, a => a.RevenueHistory); queryAsEnumerableList = AddHistoryData(queryAsEnumerableList, parameters, queryFactory.EpsHistoryQuery, a => a.EpsHistory); queryAsEnumerableList = AdjustToGrowthKoef(queryAsEnumerableList, parameters.RoeGrowthKoef, r => r.RoeHistory); queryAsEnumerableList = AdjustToGrowthKoef(queryAsEnumerableList, parameters.RevenueGrowthKoef, r => r.RevenueHistory); queryAsEnumerableList = AdjustToGrowthKoef(queryAsEnumerableList, parameters.EpsGrowthKoef, r => r.EpsHistory); List <ResultSetReinvestment> listOfResultSets = p.PageSize == 0 ? queryAsEnumerableList.ToList() : queryAsEnumerableList.Skip(p.CurrentPage * p.PageSize).Take(p.PageSize).ToList(); resultSetList = new ResultSetListReinvestment(listOfResultSets); resultSetList.CountTotal = queryAsEnumerableList.Count(); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.ReinvestmentHistoryQuery, a => a.ReinvestmentHistory); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.IncrementalRoeQuery, a => a.IncrementalRoe); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.OperatingIncomeHistoryQuery, a => a.OperatingIncome); resultSetList = AddHistoryData(resultSetList, parameters, queryFactory.CashConversionQuery, a => a.CashConversionHistory); resultSetList = AddCompanyName(resultSetList); resultSetList = AddDebtEquityIncome(resultSetList); return(resultSetList); }
/// <summary> /// Run /// </summary> /// <param name="inputResultSetList"></param> /// <returns></returns> public ResultSetListReinvestment Run(ResultSetListReinvestment inputResultSetList) { var symbols = inputResultSetList.ResultSets.Select(i => i.Symbol).ToList(); var listSymbolNameQuery = DataContext.Stocks.Where(s => symbols.Contains(s.Symbol)) .Select(a => new KeyValuePair <string, string>(a.Symbol, a.Name)).ToList(); var dictSymbolName = new Dictionary <string, string>(listSymbolNameQuery); for (int i = 0; i < inputResultSetList.ResultSets.Count(); i++) { if (dictSymbolName.ContainsKey(inputResultSetList.ResultSets[i].Symbol)) { inputResultSetList.ResultSets[i].Name = dictSymbolName[inputResultSetList.ResultSets[i].Symbol]; } } return(inputResultSetList); }