protected override void PreDeleteInsideTransaction(BusinessContext context)
        {
            base.PreDeleteInsideTransaction(context);

            DirectoryOrganizationalUnitEntity entity = (DirectoryOrganizationalUnitEntity)BusinessManager.Load(DirectoryOrganizationalUnitEntity.ClassName, context.GetTargetPrimaryKeyId().Value);

            if (entity.ParentId == null)
            {
                throw new AccessDeniedException("Can not delete root.");
            }

            // TODO: Child Business Unit

            // TODO: Delete Users

            // TODO: Delete Team

            // TODO: Delete Role

            // Remove BusinessUnit From Principal
            DirectoryManager.DeletePrincipal(context.GetTargetPrimaryKeyId().Value);

            // Remove BusinessUnitScopeId From Principal
            DirectoryManager.DeletePrincipal((PrimaryKeyId)entity.OrganizationalUnitScopeId);
        }
        /// <summary>
        /// Compares the specified x unit.
        /// </summary>
        /// <param name="xUnit">The x unit.</param>
        /// <param name="yUnit">The y unit.</param>
        /// <returns></returns>
        protected virtual int Compare(DirectoryOrganizationalUnitEntity xUnit, DirectoryOrganizationalUnitEntity yUnit)
        {
            // Root Should be First
            if (xUnit == yUnit)
            {
                return(0);
            }
            if (xUnit.ParentId == null)
            {
                return(-1);
            }
            if (yUnit.ParentId == null)
            {
                return(1);
            }

            if (xUnit.OutlineLevel == yUnit.OutlineLevel)
            {
                if (xUnit.ParentId == yUnit.ParentId)
                {
                    return(xUnit.Name.CompareTo(yUnit.Name));
                }
                else
                {
                    return(Compare(this.InnerDictionary[xUnit.ParentId.Value],
                                   this.InnerDictionary[yUnit.ParentId.Value]));
                }
            }
            else if (xUnit.OutlineLevel > yUnit.OutlineLevel)
            {
                DirectoryOrganizationalUnitEntity xUnitParent = xUnit;

                for (int index = 0; index < (xUnit.OutlineLevel - yUnit.OutlineLevel); index++)
                {
                    xUnitParent = this.InnerDictionary[xUnitParent.ParentId.Value];
                }

                int iCompareResult = Compare(xUnitParent, yUnit);
                return(iCompareResult == 0?1:iCompareResult);
            }
            else if (xUnit.OutlineLevel < yUnit.OutlineLevel)
            {
                DirectoryOrganizationalUnitEntity yUnitParent = yUnit;

                for (int index = 0; index < (yUnit.OutlineLevel - xUnit.OutlineLevel); index++)
                {
                    yUnitParent = this.InnerDictionary[yUnitParent.ParentId.Value];
                }

                int iCompareResult = Compare(xUnit, yUnitParent);
                return(iCompareResult == 0 ? -1 : iCompareResult);
            }

            return(0);
        }
        /// <summary>
        /// Creates the entity object.
        /// </summary>
        /// <param name="metaClassName">Name of the meta class.</param>
        /// <param name="primaryKeyId">The primary key id.</param>
        /// <returns></returns>
        protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId?primaryKeyId)
        {
            if (metaClassName == DirectoryOrganizationalUnitEntity.ClassName)
            {
                DirectoryOrganizationalUnitEntity retVal = new DirectoryOrganizationalUnitEntity();
                retVal.PrimaryKeyId = primaryKeyId;
                return(retVal);
            }

            return(base.CreateEntityObject(metaClassName, primaryKeyId));
        }
        /// <summary>
        /// Creates the entity object.
        /// </summary>
        /// <param name="metaClassName">Name of the meta class.</param>
        /// <param name="primaryKeyId">The primary key id.</param>
        /// <returns></returns>
        protected override EntityObject CreateEntityObject(string metaClassName, PrimaryKeyId? primaryKeyId)
        {
            if (metaClassName == DirectoryOrganizationalUnitEntity.ClassName)
            {
                DirectoryOrganizationalUnitEntity retVal = new DirectoryOrganizationalUnitEntity();
                retVal.PrimaryKeyId = primaryKeyId;
                return retVal;
            }

            return base.CreateEntityObject(metaClassName, primaryKeyId);
        }
        protected override void PreCreate(BusinessContext context)
        {
            base.PreCreate(context);

            // Check ParentId should be not null
            DirectoryOrganizationalUnitEntity target = ((DirectoryOrganizationalUnitEntity)context.Request.Target);

            if (target.ParentId == null)
            {
                throw new ArgumentNullException("target.ParentId");
            }
        }
        protected override void Create(BusinessContext context)
        {
            base.Create(context);

            // Append to tree
            DirectoryOrganizationalUnitEntity target = ((DirectoryOrganizationalUnitEntity)context.Request.Target);

            BusinessObject newElement = (BusinessObject)context.Items[MetaObjectRequestHandler.SourceMetaObjectKey];
            BusinessObject parent     = (BusinessObject)MetaObjectActivator.CreateInstance(DirectoryOrganizationalUnitEntity.ClassName,
                                                                                           target.ParentId.Value);

            TreeNode node = parent.GetService <TreeService>().AppendChild(newElement);

            parent.Save();
        }
        protected override void PreCreateInsideTransaction(BusinessContext context)
        {
            base.PreCreateInsideTransaction(context);

            // Update Icon from parent
            DirectoryOrganizationalUnitEntity target = ((DirectoryOrganizationalUnitEntity)context.Request.Target);

            if (target.Icon == null)
            {
                // Load Icon From Parent
                DirectoryOrganizationalUnitEntity parent = (DirectoryOrganizationalUnitEntity)BusinessManager.Load(DirectoryOrganizationalUnitEntity.ClassName, target.ParentId.Value);

                target.Icon = new FileInfo(parent.Icon.Name, parent.Icon.OpenRead());
            }
        }
        protected override void PostUpdateInsideTransaction(BusinessContext context)
        {
            base.PostUpdateInsideTransaction(context);

            // Principal
            if (context.Request.Target.Properties.Contains(DirectoryOrganizationalUnitEntity.FieldName))
            {
                DirectoryOrganizationalUnitEntity entity = (DirectoryOrganizationalUnitEntity)BusinessManager.Load(DirectoryOrganizationalUnitEntity.ClassName, context.GetTargetPrimaryKeyId().Value);

                DirectoryManager.UpdatePrincipal(context.GetTargetPrimaryKeyId().Value,
                                                 (string)context.Request.Target[DirectoryOrganizationalUnitEntity.FieldName]);

                DirectoryManager.UpdatePrincipal((PrimaryKeyId)entity.OrganizationalUnitScopeId,
                                                 (string)context.Request.Target[DirectoryOrganizationalUnitEntity.FieldName]);
            }
        }
Exemplo n.º 9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MoveTreeNodeRequest"/> class.
 /// </summary>
 /// <param name="target">The target.</param>
 public MoveTreeNodeRequest(DirectoryOrganizationalUnitEntity target)
     : base(DirectoryOrganizationalUnitMethod.Move, target)
 {
 }
Exemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MoveTreeNodeRequest"/> class.
 /// </summary>
 /// <param name="target">The target.</param>
 public MoveTreeNodeRequest(DirectoryOrganizationalUnitEntity target) :
     base(DirectoryOrganizationalUnitMethod.Move, target)
 {
 }