/// <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);
        }
Exemple #4
0
        /// <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);
        }