Пример #1
0
        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);
        }
Пример #2
0
        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;
        }