private bool Run(IDeleteInfo info, uint id) { try { CheckDlg = new CheckOperationDlg(); CheckDlg.Show(); var self = info.GetSelfEntity(this, id); PreparedOperation = info.CreateDeleteOperation(self); DeletedItems.Add(new DeletedItem { ItemClass = info.ObjectClass, ItemId = id, Title = self.Title }); countReferenceItems = FillChildOperation(info, PreparedOperation, new TreeIter(), self); bool isCanceled = CheckDlg.IsCanceled; CheckDlg.Destroy(); if (isCanceled) { return(false); } } catch (Exception ex) { CheckDlg.Destroy(); QSMain.ErrorMessageWithLog("Ошибка в разборе зависимостей удаляемого объекта.", logger, ex); return(false); } bool userAccept = DeleteDlg.RunDialog(this); if (userAccept) { ExcuteDlg = new DeleteOperationDlg(); ExcuteDlg.SetOperationsCount(PreparedOperation.GetOperationsCount() + 2); ExcuteDlg.Show(); BeforeDeletion?.Invoke(); try { IsHibernateMode = HasHibernateOperations(PreparedOperation); PreparedOperation.Execute(this); ExcuteDlg.AddExcuteOperation("Операции с журналом изменений"); DeleteConfig.OnAfterDeletion(sqlTransaction, DeletedItems); ExcuteDlg.AddExcuteOperation("Завершение транзакции"); if (sqlTransaction != null) { sqlTransaction.Commit(); } if (uow != null) { uow.Commit(); } return(true); } catch (Exception ex) { if (SqlTransaction != null) { sqlTransaction.Rollback(); } QSMain.ErrorMessageWithLog("Ошибка при удалении", logger, ex); } finally { ExcuteDlg.Destroy(); } } return(false); }
private bool Run(IDeleteInfo info, uint id) { try { CheckDlg = new CheckOperationDlg(); CheckDlg.Show(); var self = info.GetSelfEntity(this, id); PreparedOperation = info.CreateDeleteOperation(self); DeletedItems.Add (new DeletedItem { ItemClass = info.ObjectClass, ItemId = id, Title = self.Title }); CountReferenceItems = FillChildOperation (info, PreparedOperation, new TreeIter (), self); bool isCanceled = CheckDlg.IsCanceled; CheckDlg.Destroy(); if(isCanceled) return false; } catch (Exception ex) { CheckDlg.Destroy(); QSMain.ErrorMessageWithLog ("Ошибка в разборе зависимостей удаляемого объекта.", logger, ex); return false; } bool userAccept = DeleteDlg.RunDialog(this); if (userAccept) { ExcuteDlg = new DeleteOperationDlg(); ExcuteDlg.SetOperationsCount(PreparedOperation.GetOperationsCount() + 2); ExcuteDlg.Show(); try { IsHibernateMode = HasHibernateOperations(PreparedOperation); PreparedOperation.Execute (this); ExcuteDlg.AddExcuteOperation("Операции с журналом изменений"); DeleteConfig.OnAfterDeletion (sqlTransaction, DeletedItems); ExcuteDlg.AddExcuteOperation("Завершение транзакции"); if(sqlTransaction != null) sqlTransaction.Commit (); if(uow != null) uow.Commit (); return true; } catch (Exception ex) { if(SqlTransaction != null) sqlTransaction.Rollback (); QSMain.ErrorMessageWithLog ("Ошибка при удалении", logger, ex); } finally { ExcuteDlg.Destroy(); } } return false; }