public Task Execute() { var p = _getPortfolio.Get(); if (p == null) { return(SayWeAreCancelling()); } var portfolioId = p.Id; var query = from portfolio in _context.Portfolios where portfolio.Id == portfolioId let items = from item in _context.PortfolioItems where item.PortfolioId == portfolio.Id let security = _context.Securities.FirstOrDefault(s => s.Id == item.SecurityId) select new { security.Code, Value = item.Units * security.CurrentPrice } select items; Cmd.Dump(query.Single()); return(Task.CompletedTask); }
public Task Execute() { var portfolio = _getPortfolio.Get(); if (portfolio == null) { return(SayWeAreCancelling()); } var security = GetSecurity(); if (security == null) { return(SayWeAreCancelling()); } Cmd.WriteLine("Units (leave blank to cancel)"); var units = Cmd.Prompt(); decimal unitsValue; if (string.IsNullOrEmpty(units)) { return(SayWeAreCancelling()); } if (!decimal.TryParse(units, out unitsValue)) { Cmd.WriteErrorLine("Price is invalid"); return(SayWeAreCancelling()); } // 1. DIY //var item = new PortfolioItem(portfolio, security, unitsValue); //_context.PortfolioItems.Add(item); // 2. aggregate root //portfolio.AddItem(_context, security, unitsValue); // 3. service _addAssetToPortfolio.Add(portfolio, security, unitsValue); _context.SaveChanges(); return(Task.CompletedTask); }
public Task Execute() { var p = _getPortfolio.Get(); if (p == null) { return(SayWeAreCancelling()); } var portfolioId = p.Id; var query = from portfolio in _context.Portfolios where portfolio.Id == portfolioId let items = from item in _context.PortfolioItems where item.PortfolioId == portfolio.Id let security = _context.Securities.FirstOrDefault(s => s.Id == item.SecurityId) select new { item, security } select items; var results = from item in query.Single().ToArray() select new { item.security.Code, Value1 = item.item.Value1(item.security.CurrentPrice), Value2 = item.item.Value2(item.security) }; Cmd.Dump(results); return(Task.CompletedTask); }