void ExistingCounterparty_PageClosed(object sender, QS.Project.Journal.JournalSelectedNodesEventArgs e)
        {
            var          counterpartyNode = e.SelectedNodes.First() as CounterpartyJournalNode;
            Counterparty client           = _uow.GetById <Counterparty>(counterpartyNode.Id);

            if (!CounterpartyOrdersModels.Any(c => c.Client.Id == client.Id))
            {
                if (_interactiveService.Question($"Добавить телефон к контрагенту {client.Name} ?", "Телефон контрагента"))
                {
                    client.Phones.Add(ActiveCall.Phone);
                    _uow.Save <Counterparty>(client);
                    _uow.Commit();
                }

                CounterpartyOrderViewModel model =
                    new CounterpartyOrderViewModel(
                        client, UnitOfWorkFactory.GetDefaultFactory, _tdiNavigation, _routedListRepository, MangoManager,
                        _orderParametersProvider, _employeeJournalFactory, _counterpartyJournalFactory, _nomenclatureRepository,
                        _parametersProvider);

                CounterpartyOrdersModels.Add(model);
                currentCounterparty = client;
                MangoManager.AddCounterpartyToCall(client.Id);
                CounterpartyOrdersModelsUpdateEvent();
            }
        }
        void NewCounerpatry_PageClosed(object sender, PageClosedEventArgs e)
        {
            if (e.CloseSource == CloseSource.Save)
            {
                List <Counterparty> clients = new List <Counterparty>();
                Counterparty        client  = ((sender as TdiTabPage).TdiTab as CounterpartyDlg).Counterparty;
                client.Phones.Add(ActiveCall.Phone);
                clients.Add(client);
                _uow.Save <Counterparty>(client);

                CounterpartyOrderViewModel model =
                    new CounterpartyOrderViewModel(
                        client,
                        UnitOfWorkFactory.GetDefaultFactory,
                        _tdiNavigation,
                        _routedListRepository,
                        MangoManager,
                        _orderParametersProvider,
                        _employeeJournalFactory,
                        _counterpartyJournalFactory,
                        _nomenclatureRepository,
                        _parametersProvider);

                CounterpartyOrdersModels.Add(model);
                currentCounterparty = client;
                MangoManager.AddCounterpartyToCall(client.Id);
                CounterpartyOrdersModelsUpdateEvent();
            }
            (sender as IPage).PageClosed -= NewCounerpatry_PageClosed;
        }
        public CounterpartyTalkViewModel(
            INavigationManager navigation,
            ITdiCompatibilityNavigation tdinavigation,
            IUnitOfWorkFactory unitOfWorkFactory,
            RouteListRepository routedListRepository,
            IInteractiveService interactiveService,
            MangoManager manager) : base(navigation, manager)
        {
            this.NavigationManager = navigation ?? throw new ArgumentNullException(nameof(navigation));
            this.tdiNavigation     = tdinavigation ?? throw new ArgumentNullException(nameof(navigation));

            this.routedListRepository = routedListRepository;
            this.interactiveService   = interactiveService ?? throw new ArgumentNullException(nameof(interactiveService));
            UoW = unitOfWorkFactory.CreateWithoutRoot();

            if (ActiveCall.CounterpartyIds.Any())
            {
                var clients = UoW.GetById <Counterparty>(ActiveCall.CounterpartyIds);
                foreach (Counterparty client in clients)
                {
                    CounterpartyOrderViewModel model = new CounterpartyOrderViewModel(client, unitOfWorkFactory, tdinavigation, routedListRepository, this.MangoManager);
                    CounterpartyOrdersModels.Add(model);
                }
                currentCounterparty = CounterpartyOrdersModels.FirstOrDefault().Client;
            }
            else
            {
                throw new InvalidProgramException("Открыт диалог разговора с имеющимся контрагентом, но ни одного id контрагента не найдено.");
            }
        }
        public void NewOrderCommand()
        {
            if (currentCounterparty.IsForRetail)
            {
                _interactiveService.ShowMessage(ImportanceLevel.Warning, "Заказ поступает от контрагента дистрибуции");
            }
            var   model = CounterpartyOrdersModels.Find(m => m.Client.Id == currentCounterparty.Id);
            IPage page  = _tdiNavigation.OpenTdiTab <OrderDlg, Counterparty>(null, currentCounterparty);

            page.PageClosed += (sender, e) => { model.RefreshOrders(); };
        }
        public CounterpartyTalkViewModel(
            INavigationManager navigation,
            ITdiCompatibilityNavigation tdinavigation,
            IUnitOfWorkFactory unitOfWorkFactory,
            IRouteListRepository routedListRepository,
            IInteractiveService interactiveService,
            IOrderParametersProvider orderParametersProvider,
            MangoManager manager,
            IEmployeeJournalFactory employeeJournalFactory,
            ICounterpartyJournalFactory counterpartyJournalFactory,
            INomenclatureRepository nomenclatureRepository,
            IOrderRepository orderRepository,
            IParametersProvider parametersProvider) : base(navigation, manager)
        {
            NavigationManager = navigation ?? throw new ArgumentNullException(nameof(navigation));
            _tdiNavigation    = tdinavigation ?? throw new ArgumentNullException(nameof(navigation));

            _routedListRepository       = routedListRepository;
            _interactiveService         = interactiveService ?? throw new ArgumentNullException(nameof(interactiveService));
            _orderParametersProvider    = orderParametersProvider ?? throw new ArgumentNullException(nameof(orderParametersProvider));
            _employeeJournalFactory     = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
            _counterpartyJournalFactory = counterpartyJournalFactory ?? throw new ArgumentNullException(nameof(counterpartyJournalFactory));
            _nomenclatureRepository     = nomenclatureRepository ?? throw new ArgumentNullException(nameof(nomenclatureRepository));
            _orderRepository            = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
            _parametersProvider         = parametersProvider ?? throw new ArgumentNullException(nameof(parametersProvider));
            _uow = unitOfWorkFactory.CreateWithoutRoot();

            if (ActiveCall.CounterpartyIds.Any())
            {
                var clients = _uow.GetById <Counterparty>(ActiveCall.CounterpartyIds);

                foreach (Counterparty client in clients)
                {
                    CounterpartyOrderViewModel model = new CounterpartyOrderViewModel(
                        client, unitOfWorkFactory, tdinavigation, routedListRepository, MangoManager, _orderParametersProvider,
                        _employeeJournalFactory, _counterpartyJournalFactory, _nomenclatureRepository, _parametersProvider);
                    CounterpartyOrdersModels.Add(model);
                }

                currentCounterparty = CounterpartyOrdersModels.FirstOrDefault().Client;
            }
            else
            {
                throw new InvalidProgramException("Открыт диалог разговора с имеющимся контрагентом, но ни одного id контрагента не найдено.");
            }
        }
 void NewCounerpatry_PageClosed(object sender, PageClosedEventArgs e)
 {
     if (e.CloseSource == CloseSource.Save)
     {
         List <Counterparty> clients = new List <Counterparty>();
         Counterparty        client  = ((sender as TdiTabPage).TdiTab as CounterpartyDlg).Counterparty;
         client.Phones.Add(ActiveCall.Phone);
         clients.Add(client);
         UoW.Save <Counterparty>(client);
         CounterpartyOrderViewModel model = new CounterpartyOrderViewModel(client, UnitOfWorkFactory.GetDefaultFactory, tdiNavigation, routedListRepository, this.MangoManager);
         CounterpartyOrdersModels.Add(model);
         currentCounterparty = client;
         MangoManager.AddCounterpartyToCall(client.Id);
         CounterpartyOrdersModelsUpdateEvent();
     }
     (sender as IPage).PageClosed -= NewCounerpatry_PageClosed;
 }