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); } }
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); }