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;
        }
Example #2
0
        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;
        }