public PortfolioModel(PortfolioItemRepository portfolioItemRepository, SecurityDataRepository securityDataRepository, IncomeRepository incomeRepository) { _porfolioItemRepository = portfolioItemRepository; _securityDataRepository = securityDataRepository; _incomeRepository = incomeRepository; Messenger.Default.Register <LoadPortfolioMessage>(this, async(msg) => { IEnumerable <PortfolioItem> portfolioItemList = await this._porfolioItemRepository.GetAll(); IEnumerable <Income> incomeList = await this._incomeRepository.GetAll(); foreach (PortfolioItem item in portfolioItemList) { SecurityData data = null; if (item.Code != "RUR") { data = await this._securityDataRepository.GetById(item.Code); } else { data = new SecurityData() { MarketData = new MarketData() { LCURRENTPRICE = 1m } }; } item.Price = data.MarketData.LCURRENTPRICE != 0 ? data.MarketData.LCURRENTPRICE : data.SecurityInfo.PREVLEGALCLOSEPRICE; } decimal PorfolioPrice = portfolioItemList.Sum(p => p.Value); decimal IncomeTotal = incomeList.Sum(i => i.Value); foreach (PortfolioItem item in portfolioItemList) { item.Perc = Math.Round((item.Value / PorfolioPrice) * 100, 2); } Messenger.Default.Send <PortfolioLoadedMessage>(new PortfolioLoadedMessage() { PortfolioItems = portfolioItemList, PortfolioPrice = PorfolioPrice, IncomeTotal = IncomeTotal }); }); }
public SecurityModel(SecurityRepository securityRepository, SecurityDataRepository securityDataRepository) { this._securityRepository = securityRepository; this._securityDataRepository = securityDataRepository; Messenger.Default.Register <LoadSecurityMessage>(this, async(msg) => { Security security = await this._securityRepository.GetById(msg.Id); Messenger.Default.Send <SecurityLoadedMessage>(new SecurityLoadedMessage() { Security = security }); }); Messenger.Default.Register <LoadSecurityListMessage>(this, async(msg) => { IEnumerable <Security> securityList = await this._securityRepository.GetAll(); Messenger.Default.Send <SecurityListLoadedMessage>(new SecurityListLoadedMessage() { SecurityList = securityList }); }); Messenger.Default.Register <IISGetSecurityInfo>(this, async(msg) => { foreach (Security security in msg.SecurityList) { SecurityData data = await _securityDataRepository.GetById(security.Code); security.SecurityInfo = data.SecurityInfo; security.MarketData = data.MarketData; } }); }