コード例 #1
0
        private void CreatePortfolioNavDates(ISession session, NavDate currentNavDate)
        {
            using (var transaction = session.BeginTransaction())
            {
                IList <Portfolio> portfolioList = portfolioRepository.GetPortfolioList(session);
                logger.Log(LogLevel.Info, $"Portfolio count: {portfolioList.Count}");

                IList <PortfolioNavDate> portfolioNavDateList = portfolioNavDateRepository.GetPortfolioNavDateListByNavDate(session, currentNavDate);
                logger.Log(LogLevel.Info, $"Portfolio with NavDate {currentNavDate.Date} count: {portfolioNavDateList.Count}");

                foreach (var portfolio in portfolioList)
                {
                    if (portfolioNavDateList.Any(p => p.Portfolio.PortfolioId == portfolio.PortfolioId))
                    {
                        continue;
                    }

                    PortfolioNavDate portfolioNavDate = new PortfolioNavDate()
                    {
                        NavDate    = currentNavDate,
                        Portfolio  = portfolio,
                        CreateDate = DateTime.Now
                    };

                    portfolioNavDateRepository.SaveOrUpdate(session, portfolioNavDate);

                    logger.Log(LogLevel.Info, $"Created NavDate {currentNavDate.Date} for Portfolio {portfolio.PortfolioId}");
                }

                transaction.Commit();
            }
        }
        public IList <PortfolioNavDateSecurityPrice> GetPortfolioNavDateSecurityPriceByNavDateSymbol(ISession session, DateTime navDate, string symbol)
        {
            PortfolioNavDate pnd = null;

            Entities.PortfolioSecurity ps = null;
            NavDate   nd = null;
            Security  sd = null;
            Portfolio pt = null;

            return(session.QueryOver <PortfolioNavDateSecurityPrice>()
                   .Fetch(SelectMode.ChildFetch, p => p.PortfolioNavDate)
                   .Fetch(SelectMode.ChildFetch, p => p.PortfolioSecurity)
                   .JoinAlias(p => p.PortfolioNavDate, () => pnd).JoinAlias(() => pnd.NavDate, () => nd).JoinAlias(() => pnd.Portfolio, () => pt)
                   .JoinAlias(p => p.PortfolioSecurity, () => ps).JoinAlias(() => ps.Security, () => sd)
                   .Where(() => nd.Date == navDate.Date)
                   .And(() => sd.Symbol == symbol)
                   .List());
        }
 public IList <PortfolioNavDateSecurityPrice> GetPortfolioNavDateSecurityPriceListByPortfolioNavDate(ISession session, PortfolioNavDate portfolioNavDate)
 {
     return(session.QueryOver <PortfolioNavDateSecurityPrice>()
            .Fetch(SelectMode.ChildFetch, p => p.PortfolioNavDate)
            .Fetch(SelectMode.ChildFetch, p => p.PortfolioSecurity)
            .Where(p => p.PortfolioNavDate.PortfolioNavDateId == portfolioNavDate.PortfolioNavDateId)
            .List());
 }