All pastes #626498 Raw Edit

Untitled

public text v1 · immutable
·published 2007-07-19 18:18 UTC
rendered paste body
        public bool DeepDelete(SpecificationMatrixTemplateLayout entity)
        {
            bool success = false;

            // Create a Transaction
            TransactionManager DbTransactionManager = new TransactionManager(DbConnectionString);

            try
            {
                // First We should Deep Load All Child Objects
                Type[] ChildObjects = new Type[] { typeof(TList<SpecificationTestColumnLayout>), typeof(TList<SpecificationMatrixDataColumnLayout>), typeof(TList<TestColumnObjectLayout>) };
                DeepLoad(entity, true, DeepLoadType.IncludeChildren, ChildObjects);

                // Start Transaction
                DbTransactionManager.BeginTransaction();

                // Try Deleting Data Column Children
                if (DataRepository.SpecificationMatrixDataColumnLayoutDAL.Delete(DbTransactionManager, entity.SpecificationMatrixDataColumnLayoutCollection) == entity.SpecificationMatrixDataColumnLayoutCollection.Count)
                {

                    // See if I have Parent Test Columns
                    if (entity.SpecificationTestColumnLayoutCollection.Count > 0)
                    {

                        // Try Deleting Test Column Children
                        for (int i = 0; i < entity.SpecificationTestColumnLayoutCollection.Count; i++)
                        {

                            // See if the Current Parent Has Children
                            if (entity.SpecificationTestColumnLayoutCollection[i].TestColumnObjectLayoutCollection.Count > 0)
                            {

                                // Now We will walk through the test columns and delete the children collections within
                                if (DataRepository.TestColumnObjectLayoutDAL.Delete(DbTransactionManager, entity.SpecificationTestColumnLayoutCollection[i].TestColumnObjectLayoutCollection) == entity.SpecificationTestColumnLayoutCollection[i].TestColumnObjectLayoutCollection.Count)
                                {
                                    // No Hickups in Child Removal Process, Remove Test Columns
                                    if (DataRepository.SpecificationTestColumnLayoutDAL.Delete(DbTransactionManager, entity.SpecificationTestColumnLayoutCollection[i]))
                                    {
                                        // Entire Delete Was Successful
                                        success = true;
                                    }
                                    else
                                    {
                                        // Cancel this attempt
                                        success = false;
                                        DbTransactionManager.Rollback();
                                    }
                                }
                                else
                                {
                                    // Cancel this attempt
                                    success = false;
                                    DbTransactionManager.Rollback();
                                }
                            }
                            else
                            {
                                // Just Delete the current Parent
                                if (DataRepository.SpecificationTestColumnLayoutDAL.Delete(DbTransactionManager, entity.SpecificationTestColumnLayoutCollection[i]))
                                {
                                    // Entire Delete Was Successful
                                    success = true;
                                }
                                else
                                {
                                    // Cancel this attempt
                                    success = false;
                                    DbTransactionManager.Rollback();
                                }
                            }

                        }
                    }
                    else
                    {
                        success = true;
                    }

                    // If The Top Logic has had Success Lets Remove the Parent Entity
                    if (success)
                    {
                        if (DataRepository.SpecificationMatrixTemplateLayoutDAL.Delete(DbTransactionManager, entity))
                        {
                            // The entire Object Has been Removed Commit the Transaction
                            DbTransactionManager.Commit();
                        }
                        else
                        {
                            success = false;
                            DbTransactionManager.Rollback();
                        }
                    }

                }
                else
                {
                    // Cancel this attempt
                    DbTransactionManager.Rollback();
                }
            }
            catch (Exception ex)
            {
                DbTransactionManager.Rollback();
                throw new Exception(ex.Message + " Matrix Template BLL");
            }
            finally
            {
                DbTransactionManager.Dispose();
            }

            return success;
        }