예제 #1
0
        public void PrepareToDelete(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            var itemIDs  = new ListString(args.Parameters["items"]);
            var database = this.factory.GetDatabase(args.Parameters["database"]);

            foreach (var itemID in itemIDs)
            {
                var item = database.GetItem(itemID);
                if (SharepointProvider.IsActiveIntegrationConfigItem(item))
                {
                    args.Parameters[CancelationKey] = CancelationValue;
                    return;
                }

                if (SharepointProvider.IsActiveIntegrationDataItem(item))
                {
                    var integrationItem = new IntegrationItem(item);
                    if (!integrationItem.IsNew)
                    {
                        args.CustomData.Add(itemID, integrationItem.GUID);
                        args.CustomData.Add(itemID + "parentID", item.ParentID);
                    }
                }
            }
        }
예제 #2
0
        public static void CopyIntegrationFlagToChildren([NotNull] IntegrationItem integrationItem)
        {
            Assert.ArgumentNotNull(integrationItem, "integrationItem");

            using (new IntegrationDisabler())
            {
                if (!IsIntegrationFolder(integrationItem.InnerItem) && !IsIntegrationConfigItem(integrationItem.InnerItem))
                {
                    return;
                }

                foreach (Item childItem in integrationItem.InnerItem.Children)
                {
                    if (IsIntegrationDataItem(childItem) || IsIntegrationFolder(childItem))
                    {
                        // It is not necessary to update all descendants recursively,
                        // because it will be done by SaveItem method of ItemProvider class.
                        var childIntegrationItem = new IntegrationItem(childItem)
                        {
                            IsActive = integrationItem.IsActive
                        };
                    }
                }
            }
        }
        public static ProcessSharepointItemArgs CreateSharepointItem([NotNull] IntegrationItem sourceIntegrationItem, [NotNull] SynchContext synchContext)
        {
            Assert.ArgumentNotNull(sourceIntegrationItem, "sourceIntegrationItem");
            Assert.ArgumentNotNull(synchContext, "synchContext");

            var args = new ProcessSharepointItemArgs
            {
                SourceIntegrationItemName       = sourceIntegrationItem.Name,
                SourceIntegrationItem           = sourceIntegrationItem.InnerItem,
                SourceIntegrationItemTemplateID = sourceIntegrationItem.InnerItem.TemplateID,
                SynchContext = synchContext
            };

            return(CreateSharepointItem(args) ? args : null);
        }
        public async Task CreateOrUpdateTvShowAsync(IntegrationItem sagaItem, CancellationToken cancellationToken)
        {
            if (sagaItem == null)
            {
                throw new ArgumentNullException(nameof(sagaItem));
            }

            var tvShowExternalModel = await _tvMazeClient.GetTvShowInfoAsync(sagaItem.Id, cancellationToken);

            if (tvShowExternalModel == null)
            {
                throw new EntityNotFoundException($"Tv show with id: {sagaItem.Id} was not found at TvMaze api side.");
            }

            var tvShow = _mapper.Map <TvShow>(tvShowExternalModel);

            await _presentationDal.InsertOrUpdateItemAsync(tvShow, cancellationToken);
        }
예제 #5
0
        public void OnItemSaved(object sender, EventArgs args)
        {
            var item = Event.ExtractParameter(args, 0) as Item;

            Assert.IsNotNull(item, "No item in parameters");
            if (IntegrationDisabler.CurrentValue)
            {
                return;
            }

            if (SharepointProvider.IsActiveIntegrationDataItem(item))
            {
                var integrationItem = new IntegrationItem(item);
                if (!integrationItem.IsNew)
                {
                    using (new IntegrationDisabler())
                    {
                        this.AddToTable(PrefixSave, integrationItem.GUID, item.ParentID);
                    }
                }
            }
        }
예제 #6
0
        public UpdateServiceTests()
        {
            _integrationDal = new Mock <IIntegrationDal>();

            var dateTimeService = new Mock <IDateTimeService>();

            _integrationSagaFactory = new Mock <IIntegrationSagaFactory>();

            _tvShowUpdateService = new Mock <ITvShowUpdateService>();

            _cancellationToken = new CancellationToken();

            var sagaId = new Guid("2aa0b175-7bcb-458a-9130-9b282af9f27b");

            var dateTimeOfPreviousExecution = new DateTime(2018, 11, 6, 12, 01, 01);

            _integrationItem = new IntegrationItem(1);

            _integrationSaga = new IntegrationSagaExtended
            {
                Id               = sagaId,
                StartDate        = dateTimeOfPreviousExecution,
                IntegrationItems = new List <IntegrationItem>()
                {
                    new IntegrationItem(1),
                    new IntegrationItem(2),
                    new IntegrationItem(3)
                }
            };

            _updateService = new UpdateService(
                _integrationDal.Object,
                dateTimeService.Object,
                _integrationSagaFactory.Object,
                _tvShowUpdateService.Object
                );
        }
예제 #7
0
 public DeleteIntegrationItemAction(IntegrationItem item, SynchContext synchContext)
     : base(item, synchContext)
 {
 }
예제 #8
0
 public UpdateSharepointItemAction(ObjectModel.Entities.Items.BaseItem sharepointItem, IntegrationItem item, SynchContext synchContext)
     : base(item, synchContext)
 {
     this.sharepointItem = sharepointItem;
 }
 public ComparableUpdateSharepointItemAction(ObjectModel.Entities.Items.BaseItem sharepointItem, IntegrationItem item, SynchContext synchContext)
     : base(sharepointItem, item, synchContext)
 {
 }
예제 #10
0
 public override SyncActionBase GetCreateSharepointItemAction(SynchronizeTreeArgs args, IntegrationItem item)
 {
     return(new CreateSharepointItemAction(item, args.Context));
 }
 public ComparableUpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options)
     : base(item, sharepointItem, synchContext, options)
 {
 }
 public abstract SyncActionBase GetDeleteIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item);
 public abstract SyncActionBase GetUpdateSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem, IntegrationItem item);
 public override SyncActionBase GetUpdateIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item, BaseItem sharepointItem)
 {
     return(new ComparableUpdateIntegrationItemAction(item, sharepointItem, args.Context, args.Options));
 }
 public ComparableCreateSharepointItemAction(IntegrationItem item, SynchContext synchContext)
     : base(item, synchContext)
 {
 }
 protected IntegrationItemActionBase(IntegrationItem item, SynchContext synchContext)
     : base(synchContext)
 {
     this.Item = item;
 }
예제 #17
0
 public override SyncActionBase GetUpdateSharepointItemAction(SynchronizeTreeArgs args, BaseItem sharepointItem, IntegrationItem item)
 {
     return(new UpdateSharepointItemAction(sharepointItem, item, args.Context));
 }
예제 #18
0
 public override SyncActionBase GetDeleteIntegrationItemAction(SynchronizeTreeArgs args, IntegrationItem item)
 {
     return(new DeleteIntegrationItemAction(item, args.Context));
 }
예제 #19
0
 public CreateSharepointItemAction(IntegrationItem item, SynchContext synchContext)
     : base(item, synchContext)
 {
     Assert.IsTrue(this.Item.IsNew, "The item should be new");
 }
 public UpdateIntegrationItemAction(IntegrationItem item, ObjectModel.Entities.Items.BaseItem sharepointItem, SynchContext synchContext, ProcessIntegrationItemsOptions options)
     : base(sharepointItem, synchContext)
 {
     this.item    = item;
     this.options = options;
 }