public static TfsFieldCollection GetFieldsFor(TfsTeamProjectCollection tfs, string project)
{
if (tfs != null)
{
if (lastRequest != project)
{
fields = new TfsFieldCollection();
var workItemStore = tfs.GetService<WorkItemStore>();
var wits = workItemStore.Projects[project].WorkItemTypes;
var required = new HashSet<string>();
foreach (var failedFields in
(from WorkItemType wit in wits select new WorkItem(wit)).Select(workItem => workItem.Validate())
)
{
foreach (
var failedField in
failedFields.Cast<Field>().Where(failedField => failedField.Status != FieldStatus.Valid)
)
{
required.Add(failedField.Name);
}
}
var fds = workItemStore.Projects[project].Store.FieldDefinitions;
foreach (FieldDefinition fd in fds)
{
fields.Add(new TfsField(fd, required.Contains(fd.Name)));
}
lastRequest = project;
}
}
else
{
fields = new TfsFieldCollection();
}
return fields;
}