Ejemplo n.º 1
0
        public PortfolioQueryResult Handle(PortfolioQuery query)
        {
            var portfolio        = _repo.Load();
            var portfolioReturns = PortfolioManager.CalculateReturns(portfolio);

            return(Result());


            PortfolioQueryResult Result()
            {
                return(new PortfolioQueryResult {
                    PortfolioValue = portfolio.Entries.Sum(e => e.Qty * e.CurrentPrice),
                    PortfolioRateOfReturn = portfolioReturns.TotalRateOfReturn,
                    Stocks = portfolio.Entries.Select(Map).ToArray()
                });


                PortfolioQueryResult.StockInfo Map(Portfolio.Stock e)
                => new PortfolioQueryResult.StockInfo
                {
                    Name         = e.Name,
                    Symbol       = e.Symbol,
                    Currency     = e.Currency,
                    Qty          = e.Qty,
                    BuyingPrice  = e.BuyingPrice,
                    CurrentPrice = e.CurrentPrice,

                    BuyingValue  = e.Qty * e.BuyingPrice,
                    CurrentValue = e.Qty * e.CurrentPrice,

                    Return       = portfolioReturns.Returns[e.Symbol].Return,
                    RateOfReturn = portfolioReturns.Returns[e.Symbol].RateOfReturn
                };
            }
        }
Ejemplo n.º 2
0
        public TransactionEntry AddSymbol(string fullSymbolName, string portfolioTitle)
        {
            PortfolioQuery query         = new PortfolioQuery(FinanceNamespace.PORTFOLIOS + Details());
            PortfolioFeed  portfolioFeed = FinanceService.Query(query);

            try
            {
                foreach (PortfolioEntry entry in portfolioFeed.Entries)
                {
                    if (entry.Title.Text == portfolioTitle)
                    {
                        return(AddSymbol(fullSymbolName, entry));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return(null);
        }
Ejemplo n.º 3
0
        public bool DeletePortfolio(string title)
        {
            PortfolioQuery query         = new PortfolioQuery(FinanceNamespace.PORTFOLIOS + Details());
            PortfolioFeed  portfolioFeed = FinanceService.Query(query);

            try
            {
                foreach (PortfolioEntry entry in portfolioFeed.Entries)
                {
                    if (entry.Title.Text == title)
                    {
                        FinanceService.Delete(entry);
                        return(true);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception trying to delete portfolio = {0}, Message = {1}", title, ex.Message);
            }

            return(false);
        }
 public PortfolioQueryResult Handle(PortfolioQuery query)
 => _client.Execute <PortfolioQueryResult>("portfolioquery", query);
Ejemplo n.º 5
0
 public PortfolioQueryResult Handle([Payload] PortfolioQuery query)
 => Handler.Handle(query);