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()); }