Beispiel #1
0
        private IEnumerable <WorkItem> QueryWorkItems(WorkItemStore workItemStore)
        {
            WIQLQueryBuilder queryBuilder = new WIQLQueryBuilder();

            queryBuilder.Ids                = Id;
            queryBuilder.WorkItemTypes      = Type;
            queryBuilder.States             = State;
            queryBuilder.AssignedTo         = TfsWorkCmdletArgumentParser.ParseUserIdentities("Assigned To", workItemStore.TeamProjectCollection, AssignedTo).Select(x => x.UniqueName).ToList();
            queryBuilder.Title              = Title;
            queryBuilder.Priority           = Priority;
            queryBuilder.AreaPath           = AreaPath;
            queryBuilder.UnderAreaPath      = UnderAreaPath;
            queryBuilder.IterationPath      = IterationPath;
            queryBuilder.UnderIterationPath = UnderIterationPath;
            queryBuilder.ExtraFilters       = Filter;

            string wiqlQuery = queryBuilder.Build();

            WriteVerbose(string.Format("Query workitems with WIQL query: {0}.", wiqlQuery));

            var workItemCollection = workItemStore.Query(wiqlQuery);

            foreach (WorkItem workItem in workItemCollection)
            {
                yield return(workItem);
            }
        }
Beispiel #2
0
        protected override void ProcessRecordInEH()
        {
            Project project = EnsureProject();

            WorkItemType workItemType = EnsureWorkItemType(project);

            WorkItem workItem = workItemType.NewWorkItem();

            workItem.Title = Title;

            Field  assignedToField    = workItem.Fields[WIQLSystemFieldNames.AssignedTo];
            string assignedToUserPart = TfsWorkCmdletArgumentParser.ParseUserDisplayPartForWorkItemIdentityField("Assigned To", project.GetCollection(), assignedToField, AssignedTo);

            if (assignedToUserPart != null)
            {
                assignedToField.Value = assignedToUserPart;
            }

            if (Priority >= 0)
            {
                var priorityField = workItem.Fields[WIQLSystemFieldNames.Priority];
                if (priorityField == null)
                {
                    throw new PSArgumentException("This project doesn't support the default priority field.");
                }
                priorityField.Value = Priority;
            }

            if (!string.IsNullOrEmpty(Tags))
            {
                workItem.Tags = Tags;
            }

            if (!string.IsNullOrEmpty(AreaPath))
            {
                workItem.AreaPath = AreaPath;
            }

            if (!string.IsNullOrEmpty(IterationPath))
            {
                workItem.IterationPath = IterationPath;
            }

            if (Parent > 0)
            {
                WorkItemLinkTypeEndCollection linkTypeCollection = project.Store.WorkItemLinkTypes.LinkTypeEnds;
                if (!linkTypeCollection.Contains(TfsWorkItemSystemLinkTypeNames.SystemLinkTypesHiearachyReverse))
                {
                    throw new InvalidOperationException("Parent work item link type doesn't exist, cannot create links to connect to parent work item.");
                }

                WorkItemLinkTypeEnd linkTypeEnd = project.Store.WorkItemLinkTypes.LinkTypeEnds[TfsWorkItemSystemLinkTypeNames.SystemLinkTypesHiearachyReverse];
                workItem.Links.Add(new RelatedLink(linkTypeEnd, Parent));
            }

            if (Properties != null)
            {
                foreach (DictionaryEntry property in Properties)
                {
                    string propertyKey = property.Key as string;

                    Field propertyValue = workItem.Fields[propertyKey];
                    if (propertyValue == null)
                    {
                        throw new PSArgumentException(string.Format("Unexpected property: {0}.", propertyKey));
                    }

                    propertyValue.Value = property.Value;
                }
            }

            ArrayList validateResults = workItem.Validate();

            if (validateResults.Count > 0)
            {
                StringBuilder validateResultMessage = new StringBuilder();
                validateResultMessage.AppendLine("Work item validation failed!");
                validateResultMessage.AppendLine("Invaild fields are listed below:");

                foreach (Field field in validateResults)
                {
                    validateResultMessage.AppendFormat("- Field \"{0}\": {1}.", field.Name, field.Status.ToString());
                }

                throw new InvalidOperationException(validateResultMessage.ToString());
            }

            workItem.Save();

            WriteObject(workItem);
        }