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)); }
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)); }
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; }
public bool Question(string message, string title = null) { return(interactiveQuestion.Question(message, title)); }