protected void InitPopupActions()
        {
            var callTaskWorker = new CallTaskWorker(
                CallTaskSingletonFactory.GetInstance(),
                callTaskRepository,
                OrderSingletonRepository.GetInstance(),
                EmployeeSingletonRepository.GetInstance(),
                baseParametersProvider,
                commonServices.UserService,
                SingletonErrorReporter.Instance);

            PopupActionsList.Add(new JournalAction(
                                     "Закрытие МЛ",
                                     (selectedItems) => selectedItems.Any(x => closingDlgStatuses.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) => selectedItems.Any(x => closingDlgStatuses.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) =>
            {
                var selectedNode = selectedItems.FirstOrDefault() as RouteListJournalNode;
                if (selectedNode != null && closingDlgStatuses.Contains(selectedNode.StatusEnum))
                {
                    TabParent.OpenTab(
                        DialogHelper.GenerateDialogHashName <RouteList>(selectedNode.Id),
                        () => new RouteListClosingDlg(selectedNode.Id)
                        );
                }
            }
                                     ));

            PopupActionsList.Add(new JournalAction(
                                     "Создание талона погрузки",
                                     (selectedItems) => selectedItems.Any(x => createCarLoadDocument.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) => selectedItems.Any(x => createCarLoadDocument.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) =>
            {
                var selectedNode = selectedItems.FirstOrDefault() as RouteListJournalNode;
                if (selectedNode != null)
                {
                    TabParent.OpenTab(() => new CarLoadDocumentDlg(selectedNode.Id, null));
                }
            }
                                     ));

            PopupActionsList.Add(new JournalAction(
                                     "Создание талона разгрузки",
                                     (selectedItems) => selectedItems.Any(x => createCarUnloadDocument.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) => selectedItems.Any(x => createCarUnloadDocument.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) =>
            {
                var selectedNode = selectedItems.FirstOrDefault() as RouteListJournalNode;
                if (selectedNode != null)
                {
                    TabParent.OpenTab(() => new CarUnloadDocumentDlg(selectedNode.Id, null));
                }
            }
                                     ));

            PopupActionsList.Add(new JournalAction(
                                     "Выдать топливо",
                                     (selectedItems) => selectedItems.Any(x => fuelIssuingStatuses.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) => selectedItems.Any(x => fuelIssuingStatuses.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) =>
            {
                var selectedNode = selectedItems.FirstOrDefault() as RouteListJournalNode;
                if (selectedNode != null)
                {
                    var RouteList = UoW.GetById <RouteList>(selectedNode.Id);
                    TabParent.OpenTab(
                        DialogHelper.GenerateDialogHashName <RouteList>(selectedNode.Id),
                        () => new FuelDocumentViewModel(
                            RouteList,
                            commonServices,
                            subdivisionRepository,
                            EmployeeSingletonRepository.GetInstance(),
                            fuelRepository,
                            NavigationManagerProvider.NavigationManager
                            )
                        );
                }
            }
                                     ));

            PopupActionsList.Add(new JournalAction(
                                     "Вернуть в статус Сдается",
                                     (selectedItems) => selectedItems.Any(x => canReturnToOnClosing.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) => selectedItems.Any(x => canReturnToOnClosing.Contains((x as RouteListJournalNode).StatusEnum)),
                                     (selectedItems) =>
            {
                var selectedNode      = selectedItems.FirstOrDefault() as RouteListJournalNode;
                bool isSlaveTabActive = false;
                if (selectedNode != null)
                {
                    using (var uowLocal = UnitOfWorkFactory.CreateWithoutRoot())
                    {
                        var routeList = uowLocal.Session.QueryOver <RouteList>()
                                        .Where(x => x.Id == selectedNode.Id)
                                        .List().FirstOrDefault();

                        if (canReturnToOnClosing.Contains(routeList.Status))
                        {
                            if (TabParent.FindTab(DialogHelper.GenerateDialogHashName <RouteList>(routeList.Id)) != null)
                            {
                                MessageDialogHelper.RunInfoDialog("Требуется закрыть подчиненную вкладку");
                                isSlaveTabActive = true;
                                return;
                            }
                            routeList.ChangeStatusAndCreateTask(RouteListStatus.OnClosing, callTaskWorker);
                            uowLocal.Save(routeList);
                            if (isSlaveTabActive)
                            {
                                return;
                            }
                        }
                        uowLocal.Commit();
                    }
                }
            }
                                     ));
        }
        static void RegisterVodovozClassConfig(ContainerBuilder builder)
        {
            builder.RegisterType <WaterFixedPricesGenerator>().AsSelf();

            #region Adapters & Factories

            builder.RegisterType <GtkTabsOpener>().As <IGtkTabsOpener>();
            builder.RegisterType <UndeliveredOrdersJournalOpener>().As <IUndeliveredOrdersJournalOpener>();
            builder.RegisterType <RdlPreviewOpener>().As <IRDLPreviewOpener>();

            builder.RegisterType <NomenclatureJournalFactory>().As <INomenclatureJournalFactory>();
            builder.RegisterType <OrderSelectorFactory>().As <IOrderSelectorFactory>();
            builder.RegisterType <DeliveryPointJournalFactory>().As <IDeliveryPointJournalFactory>();
            builder.RegisterType <EmployeeJournalFactory>().As <IEmployeeJournalFactory>();
            builder.RegisterType <CounterpartyJournalFactory>().As <ICounterpartyJournalFactory>();
            builder.RegisterType <SubdivisionJournalFactory>().As <ISubdivisionJournalFactory>();
            builder.RegisterType <SalesPlanJournalFactory>().As <ISalesPlanJournalFactory>();
            builder.RegisterType <ExpenseCategorySelectorFactory>().As <IExpenseCategorySelectorFactory>();
            builder.RegisterType <CarJournalFactory>().As <ICarJournalFactory>();
            builder.RegisterType <CarModelJournalFactory>().As <ICarModelJournalFactory>();
            builder.RegisterType <CarManufacturerJournalFactory>().As <ICarManufacturerJournalFactory>();
            builder.RegisterType <NomenclatureFixedPriceFactory>().AsSelf();

            builder.RegisterType <DialogsFactory>().As <IDialogsFactory>();
            builder.RegisterType <CarVersionsViewModelFactory>().As <ICarVersionsViewModelFactory>();
            builder.RegisterType <PaymentFromAvangardFactory>().As <IPaymentFromAvangardFactory>();

            #endregion

            #region Controllers

            builder.RegisterType <OrderDiscountsController>().As <IOrderDiscountsController>();
            builder.RegisterType <NomenclatureFixedPriceController>().As <INomenclatureFixedPriceProvider>();

            #endregion

            #region Services

            builder.Register(c => VodovozGtkServicesConfig.EmployeeService).As <IEmployeeService>();
            builder.RegisterType <FileDialogService>().As <IFileDialogService>();
            builder.Register(c => PermissionExtensionSingletonStore.GetInstance()).As <IPermissionExtensionStore>();
            builder.RegisterType <EntityExtendedPermissionValidator>().As <IEntityExtendedPermissionValidator>();
            builder.RegisterType <EmployeeService>().As <IEmployeeService>();
            builder.Register(c => PermissionsSettings.PermissionService).As <IPermissionService>();
            builder.Register(c => ErrorReporter.Instance).As <IErrorReporter>();

            #endregion

            #region CallTasks

            builder.Register(context => CallTaskSingletonFactory.GetInstance()).As <ICallTaskFactory>();

            builder.Register(context => new CallTaskWorker(
                                 context.Resolve <ICallTaskFactory>(),
                                 context.Resolve <ICallTaskRepository>(),
                                 context.Resolve <IOrderRepository>(),
                                 context.Resolve <IEmployeeRepository>(),
                                 context.Resolve <IPersonProvider>(),
                                 context.Resolve <IUserService>(),
                                 context.Resolve <IErrorReporter>()
                                 )).As <ICallTaskWorker>();

            #endregion

            #region  епозитории

            builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(CounterpartyContractRepository)))
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces()
            .SingleInstance();

            #endregion

            #region Mango

            builder.RegisterType <MangoManager>().AsSelf();

            #endregion

            #region Reports

            builder.RegisterType <CounterpartyCashlessDebtsReport>().AsSelf();

            #endregion

            #region Старые диалоги

            builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(CounterpartyDlg)))
            .Where(t => t.IsAssignableTo <ITdiTab>())
            .AsSelf();

            #endregion

            #region ParameterProviders

            builder.RegisterType <BaseParametersProvider>()
            .As <ITerminalNomenclatureProvider>()
            .As <IProfitCategoryProvider>()
            .AsSelf();

            builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(ParametersProvider)))
            .Where(t => t.Name.EndsWith("Provider"))
            .AsImplementedInterfaces()
            .AsSelf()
            .SingleInstance();

            builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof(ParametersProvider)))
            .Where(t => t.Name.EndsWith("Settings"))
            .AsImplementedInterfaces()
            .AsSelf()
            .SingleInstance();

            builder.RegisterType <RdlViewerViewModel>().AsSelf();

            #endregion

            #region Фильтры

            builder.RegisterType <PaymentsJournalFilterViewModel>().AsSelf();
            builder.RegisterType <UnallocatedBalancesJournalFilterViewModel>().AsSelf();

            #endregion
        }