Ejemplo n.º 1
0
        public override bool MoveItem([NotNull] ItemDefinition itemDefinition, [NotNull] ItemDefinition destination, [NotNull] CallContext context)
        {
            Assert.ArgumentNotNull(itemDefinition, nameof(itemDefinition));
            Assert.ArgumentNotNull(destination, nameof(destination));
            Assert.ArgumentNotNull(context, nameof(context));

#if DEBUG
            var timer = Stopwatch.StartNew();
#endif

            if (HeadProvider.GetItemDefinition(itemDefinition.ID, context) == null)
            {
                using (new SecurityDisabler())
                {
                    var item = context.DataManager.Database.GetItem(itemDefinition.ID);
                    Assert.IsNotNull(item, nameof(item));

                    if (!MigrateDefaultItem(itemDefinition, item, context))
                    {
#if DEBUG
                        this.Trace(false, timer, itemDefinition.ID, destination.ID, context);
#endif

                        return(false);
                    }
                }
            }

            var moved = HeadProvider.MoveItem(itemDefinition, destination, context);

#if DEBUG
            this.Trace(moved, timer, itemDefinition.ID, destination.ID, context);
#endif

            return(moved);
        }