Пример #1
0
        public DeleteCore DeleteEntity(Type clazz, int id, IUnitOfWork uow = null, Action beforeDeletion = null)
        {
            var deletion = new DeleteCore(configuration, uow);

            #region Подготовка удаления
            using (var cancellation = new CancellationTokenSource()) {
                var preparePage = navigation.OpenViewModel <PrepareDeletionViewModel, DeleteCore, CancellationTokenSource>(null, deletion, cancellation);
                deletion.PrepareDeletion(clazz, id, cancellation.Token);
                if (cancellation.IsCancellationRequested)
                {
                    return(deletion);
                }
                navigation.ForceClosePage(preparePage, CloseSource.External);
            }
            #endregion
            #region Диалог удаления
            if (deletion.TotalLinks > 0)
            {
                var deletionPage = navigation.OpenViewModel <DeletionViewModel, DeleteCore>(null, deletion);
                deletionPage.ViewModel.DeletionAccepted = () => RunDeletion(deletion);
            }
            else if (interactive.Question($"Удалить {deletion.RootEntity.Title}?"))
            {
                RunDeletion(deletion);
            }
            else
            {
                deletion.DeletionExecuted = false;
            }
            #endregion
            return(deletion);
        }
        public DeleteCore DeleteEntity(Type clazz, int id, IUnitOfWork uow = null, Action beforeDeletion = null)
        {
            var deletion = new DeleteCore(configuration, uow);

            deletion.BeforeDeletion = beforeDeletion;

            #region Подготовка удаления

            IPage <PrepareDeletionViewModel> preparePage = null;

            using (var cancellation = new CancellationTokenSource()) {
                try
                {
                    preparePage = navigation.OpenViewModel <PrepareDeletionViewModel, DeleteCore, CancellationTokenSource>(null, deletion, cancellation);
                    deletion.PrepareDeletion(clazz, id, cancellation.Token);
                    if (cancellation.IsCancellationRequested)
                    {
                        deletion.Close();
                        return(deletion);
                    }
                }
                finally
                {
                    if (preparePage != null)
                    {
                        navigation.ForceClosePage(preparePage, CloseSource.External);
                    }
                }
            }

            #endregion

            #region Диалог удаления
            if (deletion.TotalLinks > 0)
            {
                var deletionPage = navigation.OpenViewModel <DeletionViewModel, DeleteCore>(null, deletion);
                deletionPage.ViewModel.DeletionAccepted = () => RunDeletion(deletion);
                deletionPage.PageClosed += delegate(object sender, PageClosedEventArgs e) {
                    if (e.CloseSource != CloseSource.Self)
                    {
                        deletion.Close();
                    }
                };
            }
            else if (interactive.Question($"Удалить {deletion.RootEntity.Title}?"))
            {
                RunDeletion(deletion);
            }
            else
            {
                deletion.Close();
                deletion.DeletionExecuted = false;
            }
            #endregion
            return(deletion);
        }
 public void OpenIssuenceSheet()
 {
     if (UoW.HasChanges)
     {
         if (!interactive.Question("Сохранить документ выдачи перед открытием ведомости?") || !Save())
         {
             return;
         }
     }
     MainClass.MainWin.NavigationManager.OpenViewModel <IssuanceSheetViewModel, IEntityUoWBuilder>(this, EntityUoWBuilder.ForOpen(Entity.IssuanceSheet.Id));
 }
Пример #4
0
        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 (_interactive.Question($"Добавить телефон к контрагенту {client.Name} ?", "Телефон контрагента"))
            {
                if (!client.Phones.Any(phone => phone.DigitsNumber == ActiveCall.Phone.DigitsNumber))
                {
                    client.Phones.Add(ActiveCall.Phone);
                    _uow.Save <Counterparty>(client);
                    _uow.Commit();
                }
            }
            this.Close(true, CloseSource.External);
            MangoManager.AddCounterpartyToCall(client.Id);
        }
 private void Entity_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName != nameof(Entity.WarehouseFrom) || Entity.WarehouseFrom == lastWarehouse)
     {
         return;
     }
     if (Entity.Items.Any())
     {
         if (interactive.Question("При изменении склада отправителя строки документа будут очищены. Продолжить?"))
         {
             Entity.ObservableItems.Clear();
         }
         else                   //Возвращаем назад старый склад
         {
             Entity.WarehouseFrom = lastWarehouse;
             return;
         }
     }
     lastWarehouse = Entity.WarehouseFrom;
     OnPropertyChanged(nameof(CanAddItem));
 }
Пример #6
0
        public void TryConnect()
        {
            logger.Info("Пытаемся восстановить соединение...");

            bool timeout = runOperationService.GetRunOperationView().RunOperation(new ThreadStart(DoConnect),
                                                                                  DbConnection.ConnectionTimeout,
                                                                                  "Соединяемся с сервером MySQL.");

            if (!waitResultIsOk || timeout)
            {
                bool result = question.Question("Соединение было разорвано. Повторить попытку подключения? В противном случае приложение завершит работу.", "Соединение разорвано");
                if (result)
                {
                    TryConnect();
                }
                else
                {
                    Environment.Exit(1);
                }
            }
        }
 private void Entity_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName != nameof(Entity.SourceWarehouse) || Entity.SourceWarehouse == lastWarehouse || Entity.SourceItems is null)
     {
         return;
     }
     if (Entity.SourceItems.Any())
     {
         if (interactive.Question("При изменении склада комплектующих строки документа будут очищены. Продолжить?"))
         {
             Entity.ObservableSourceItems.Clear();
         }
         else                   //Возвращаем назад старый склад
         {
             Entity.SourceWarehouse = lastWarehouse;
             return;
         }
     }
     OnPropertyChanged(nameof(CanDelItemSource));
     lastWarehouse = Entity.SourceWarehouse;
 }
Пример #8
0
 public bool Question(string message, string title = null)
 {
     return(interactiveQuestion.Question(message, title));
 }