public DepositsViewModel(KeeperDb db, RateExtractor rateExtractor,
                                 DepositCalculationAggregator depositCalculatorAggregator,
                                 OldRatesDiagramDataExtractor oldRatesDiagramDataExtractor)
        {
            var sw = new Stopwatch();

            Console.WriteLine("DepositViewModel ctor starts {0}", sw.Elapsed);
            sw.Start();

            _db            = db;
            _rateExtractor = rateExtractor;
            _depositCalculatorAggregator  = depositCalculatorAggregator;
            _oldRatesDiagramDataExtractor = oldRatesDiagramDataExtractor;

            MyTitleStyle = new Style();

            DepositList = new List <Deposit>();
            foreach (var account in _db.FlattenAccounts())
            {
                if (!account.Is("Депозиты") || account.Children.Count != 0 || !account.IsDeposit())
                {
                    continue;
                }
                _depositCalculatorAggregator.FillinFieldsForOneDepositReport(account.Deposit);
                DepositList.Add(account.Deposit);
            }
            SelectedDeposit = DepositList[0];

            UpperRow    = new GridLength(1, GridUnitType.Star);
            LowerRow    = new GridLength(1, GridUnitType.Star);
            LeftColumn  = new GridLength(1, GridUnitType.Star);
            RightColumn = new GridLength(1, GridUnitType.Star);

            DepoCurrenciesProportionChartCtor();
            Console.WriteLine("DepositViewModel ctor 1 {0}", sw.Elapsed);
            YearsProfitCtor();
            Console.WriteLine("DepositViewModel ctor 2 {0}", sw.Elapsed);
            TotalBalancesCtor();
            Console.WriteLine("DepositViewModel ctor 3 {0}", sw.Elapsed);
//            CashDepoProportionChartCtor();

            sw.Stop();
            Console.WriteLine("DepositViewModel ctor takes {0}", sw.Elapsed);
        }
        public void ShowDepositReport()
        {
            if (!MyForestModel.SelectedAccount.IsDeposit() || MyForestModel.SelectedAccount.Children.Count != 0)
            {
                return;
            }

            foreach (var launchedForm in _launchedForms)
            {
                if (launchedForm is DepositViewModel && launchedForm.IsActive &&
                    ((DepositViewModel)launchedForm).Deposit.ParentAccount == MyForestModel.SelectedAccount)
                {
                    launchedForm.TryClose();
                }
            }

            var depositForm = IoC.Get <DepositViewModel>();

            _depositCalculationAggregator.FillinFieldsForOneDepositReport(MyForestModel.SelectedAccount.Deposit);
            depositForm.SetAccount(MyForestModel.SelectedAccount);
            _launchedForms.Add(depositForm);
            depositForm.RenewPressed += DepositViewModelRenewed; // подписываемся на переофрмление депозита, если оно произойдет надо сменить селекшен
            WindowManager.ShowWindow(depositForm);
        }