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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }