internal static List<WorkItem> GetLeadTasks( string tfsUrl, string areaPath, string iterarion, Action<int> progressReportHandler) { var strBuilder = new StringBuilder(); strBuilder.Append("SELECT * FROM WorkItems"); strBuilder.Append(" WHERE [System.WorkItemType] = 'LeadTask'"); strBuilder.Append(" AND [Microsoft.VSTS.Common.Discipline] = 'Development'"); strBuilder.Append(" AND [System.AreaPath] UNDER '" + areaPath + "'"); strBuilder.Append(" AND [System.IterationPath] UNDER '" + iterarion + "'"); strBuilder.Append(" AND [System.Reason] <> 'Canceled'"); strBuilder.Append(" AND [Children Completed Work] > 0"); List<WorkItem> result; using (var wiqlAccessor = new TfsWiqlAccessor(tfsUrl)) { result = wiqlAccessor.QueryWorkItems( strBuilder.ToString(), null, null, progressReportHandler); } return result; }
private List<WorkItem> GetLeadTasks( string tfsUrl, List<string> values, bool withSubTrees, bool withSprint, string systemFieldName, string fieldAlias, string additionalOrderField) { var paramValues = new Dictionary<string, object> { {"project", @"FORIS_Mobile"}, }; var complexParamValues = new Dictionary<string, List<object>> { {"discipline", new List<object>{"Development"}}, {"wiType", new List<object>{"LeadTask"}}, {"wiState", new List<object>{"Proposed", "Active"}}, }; var strBuilder = new StringBuilder(); strBuilder.Append("SELECT * FROM WorkItems"); strBuilder.Append(" WHERE [System.TeamProject] = @project"); strBuilder.Append(" AND [System.WorkItemType] IN (@wiType)"); strBuilder.Append(" AND [System.State] IN (@wiState)"); if (withSprint) strBuilder.Append(" AND [Sprint] <> ''"); strBuilder.Append(" AND [Microsoft.VSTS.Common.Discipline] IN (@discipline)"); if (withSubTrees) { strBuilder.Append(" AND ("); for (int i = 0; i < values.Count; i++) { string dataParam = fieldAlias + i; if (i > 0) strBuilder.Append(" OR "); strBuilder.Append("[" + systemFieldName + "] UNDER @" + dataParam); paramValues.Add(dataParam, values[i]); } strBuilder.Append(")"); } else { strBuilder.Append(" AND [" + systemFieldName + "] IN (@" + fieldAlias + ")"); complexParamValues.Add(fieldAlias, values.Cast<object>().ToList()); } strBuilder.Append(" ORDER BY [Priority], ["); strBuilder.Append(additionalOrderField + "]"); List<WorkItem> result; using (var wiqlAccessor = new TfsWiqlAccessor(tfsUrl)) { result = wiqlAccessor.QueryWorkItems( strBuilder.ToString(), paramValues, complexParamValues, null); } return result; }