//public static IServiceCollection TfsObjectModelWorkerServices(this IServiceCollection collection, EngineConfiguration config)
        //{
        //    if (collection == null) throw new ArgumentNullException(nameof(collection));
        //    if (config == null) throw new ArgumentNullException(nameof(config));

        //   // return collection.AddTransient<IWorkItemSink, AzureDevOpsWorkItemSink>();
        //}

        //public static void SaveWorkItem(this IProcessor context, WorkItem workItem)
        //{
        //    if (workItem == null) throw new ArgumentNullException(nameof(workItem));
        //    workItem.Fields["System.ChangedBy"].Value = "Migration";
        //    workItem.Save();
        //}

        public static void SaveToAzureDevOps(this WorkItemData context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var workItem = (WorkItem)context.internalObject;
            var fails    = workItem.Validate();

            if (fails.Count > 0)
            {
                Log.Warning("Work Item is not ready to save as it has some invalid fields. This may not result in an error. Enable LogLevel as 'Debug' in the ocnfig to see more.");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                foreach (Field f in fails)
                {
                    Log.Debug("   Invalid Field: [Id:{CurrentRevisionWorkItemId}/{CurrentRevisionWorkItemRev}][Type:{CurrentRevisionWorkItemTypeName}][IsDirty:{IsDirty}][ReferenceName:{FieldReferenceName}][Value: {FieldValue}]",
                              new Dictionary <string, object>()
                    {
                        { "CurrentRevisionWorkItemId", workItem.Id },
                        { "CurrentRevisionWorkItemRev", workItem.Rev },
                        { "CurrentRevisionWorkItemTypeName", workItem.Type },
                        { "IsDirty", f.IsDirty },
                        { "FieldReferenceName", f.ReferenceName },
                        { "FieldValue", f.Value }
                    });
                    Log.Verbose("{   Field Object: {field}", f);
                }
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
            }
            workItem.Fields["System.ChangedBy"].Value = "Migration";
            workItem.Save();
            context.RefreshWorkItem();
        }
        //public static IServiceCollection TfsObjectModelWorkerServices(this IServiceCollection collection, EngineConfiguration config)
        //{
        //    if (collection == null) throw new ArgumentNullException(nameof(collection));
        //    if (config == null) throw new ArgumentNullException(nameof(config));

        //   // return collection.AddTransient<IWorkItemSink, AzureDevOpsWorkItemSink>();
        //}

        //public static void SaveWorkItem(this IProcessor context, WorkItem workItem)
        //{
        //    if (workItem == null) throw new ArgumentNullException(nameof(workItem));
        //    workItem.Fields["System.ChangedBy"].Value = "Migration";
        //    workItem.Save();
        //}

        public static void SaveToAzureDevOps(this WorkItemData context)
        {
            Log.Debug("TfsExtensions::SaveToAzureDevOps");

            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var workItem = (WorkItem)context.internalObject;

            Log.Debug("TfsExtensions::SaveToAzureDevOps: ChangedBy: {ChangedBy}, AuthorisedBy: {AuthorizedIdentity}", workItem.ChangedBy, workItem.Store.TeamProjectCollection.AuthorizedIdentity.DisplayName);
            var fails = workItem.Validate();

            if (fails.Count > 0)
            {
                Log.Warning("Work Item is not ready to save as it has some invalid fields. This may not result in an error. Enable LogLevel as 'Debug' in the config to see more.");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                foreach (Field f in fails)
                {
                    Log.Debug("Invalid Field Object:\r\n{Field}", f.ToJson());
                }
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
            }
            Log.Verbose("TfsExtensions::SaveToAzureDevOps::Save()");
            workItem.Save();
            context.RefreshWorkItem();
        }
        //public static IServiceCollection TfsObjectModelWorkerServices(this IServiceCollection collection, EngineConfiguration config)
        //{
        //    if (collection == null) throw new ArgumentNullException(nameof(collection));
        //    if (config == null) throw new ArgumentNullException(nameof(config));

        //   // return collection.AddTransient<IWorkItemSink, AzureDevOpsWorkItemSink>();
        //}

        //public static void SaveWorkItem(this IProcessor context, WorkItem workItem)
        //{
        //    if (workItem == null) throw new ArgumentNullException(nameof(workItem));
        //    workItem.Fields["System.ChangedBy"].Value = "Migration";
        //    workItem.Save();
        //}

        public static void SaveToAzureDevOps(this WorkItemData context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var workItem = (WorkItem)context.internalObject;
            var fails    = workItem.Validate();

            if (fails.Count > 0)
            {
                Log.Warning("Work Item is not ready to save as it has some invalid fields. This may not result in an error. Enable LogLevel as 'Debug' in the config to see more.");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                foreach (Field f in fails)
                {
                    Log.Debug("Invalid Field Object:\r\n{Field}", f.ToJson());
                }
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
                Log.Debug("--------------------------------------------------------------------------------------------------------------------");
            }
            workItem.Fields["System.ChangedBy"].Value = "Migration";
            workItem.Save();
            context.RefreshWorkItem();
        }
        public static WorkItemData AsWorkItemData(this WorkItem context, FieldCollection fieldsOfRevision = null)
        {
            var internalWorkItem = new WorkItemData
            {
                internalObject = context
            };

            internalWorkItem.RefreshWorkItem(fieldsOfRevision);
            return(internalWorkItem);
        }
        public static WorkItemData AsWorkItemData(this WorkItem context)
        {
            var internalWorkItem = new WorkItemData
            {
                internalObject = context
            };

            internalWorkItem.RefreshWorkItem();
            return(internalWorkItem);
        }
        public static WorkItemData GetRevision(this WorkItemData context, int rev)
        {
            var wid = new WorkItemData
            {
                internalObject = context.internalObject
            };

            wid.RefreshWorkItem((FieldCollection)context.Revisions[rev].Fields);

            return(wid);
        }
        public static WorkItemData AsWorkItemData(this WorkItem context, Dictionary <string, object> fieldsOfRevision = null, int retryLimit = 10)
        {
            var internalWorkItem = new WorkItemData
            {
                internalObject = context
            };

            CallWithRetry(() => internalWorkItem.RefreshWorkItem(fieldsOfRevision), retryLimit);

            return(internalWorkItem);
        }
예제 #8
0
        public static WorkItemData AsWorkItemData(this WorkItem context)
        {
            Log.Debug("TfsExtensions::AsWorkItemData");
            var internalWorkItem = new WorkItemData
            {
                internalObject = context
            };

            internalWorkItem.RefreshWorkItem();
            return(internalWorkItem);
        }
        //public static IServiceCollection TfsObjectModelWorkerServices(this IServiceCollection collection, EngineConfiguration config)
        //{
        //    if (collection == null) throw new ArgumentNullException(nameof(collection));
        //    if (config == null) throw new ArgumentNullException(nameof(config));

        //   // return collection.AddTransient<IWorkItemSink, AzureDevOpsWorkItemSink>();
        //}

        //public static void SaveWorkItem(this IProcessor context, WorkItem workItem)
        //{
        //    if (workItem == null) throw new ArgumentNullException(nameof(workItem));
        //    workItem.Fields["System.ChangedBy"].Value = "Migration";
        //    workItem.Save();
        //}

        public static void SaveToAzureDevOps(this WorkItemData context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            var wi = (WorkItem)context.internalObject;

            wi.Fields["System.ChangedBy"].Value = "Migration";
            wi.Save();
            context.RefreshWorkItem();
        }
        public static WorkItemData GetRevisionAsync(this WorkItemData context, int rev, int retryLimit = 10)
        {
            var originalWi = (WorkItem)context.internalObject;
            var wid        = new WorkItemData
            {
                // internalObject = context.internalObject
                // TODO: Had to revert to calling revision load again untill WorkItemMigrationContext.PopulateWorkItem can be updated to pull from WorkItemData
                internalObject = originalWi.Store.GetWorkItem(originalWi.Id, rev)
            };

            CallWithRetry(() => wid.RefreshWorkItem(context.Revisions[rev].Fields), retryLimit);

            return(wid);
        }
        public static WorkItemData AsWorkItemData(this WorkItem context)
        {
            if (context.AreaPath == "migrationTarget1")
            {
                //stop here
                Log.Information(context.AreaPath);
            }
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var internalWorkItem = new WorkItemData();

            internalWorkItem.internalObject = context;
            internalWorkItem.RefreshWorkItem();
            return(internalWorkItem);
        }