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 }; } }
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); }
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);
public PortfolioQueryResult Handle([Payload] PortfolioQuery query) => Handler.Handle(query);