Beispiel #1
0
        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
                });
            });
        }
Beispiel #2
0
        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;
                }
            });
        }