private void RefreshSelectedDefinitionWorkItems()
{
this.Logger().Trace("RefreshSelectedDefinitionWorkItems");
if (SelectedWorkItemQueryDefinition == null)
return;
WorkItemCollection workItemCollection;
if (teamPilgrimServiceModelProvider.TryGetQueryDefinitionWorkItemCollection(out workItemCollection,
_projectCollectionServiceModel.TfsTeamProjectCollection,
SelectedWorkItemQueryDefinition.QueryDefinition,
SelectedWorkItemQueryDefinition.Project.Name))
{
var currentWorkItems = workItemCollection.Cast<WorkItem>().ToArray();
var modelIntersection = WorkItems == null
? new WorkItemModel[0]
: WorkItems
.Join(currentWorkItems, model => model.WorkItem.Id,
workItem => workItem.Id,
(model, change) => model)
.ToArray();
var modelsToRemove = WorkItems.Where(model => !modelIntersection.Contains(model)).ToArray();
var selectedWorkItemCheckinActionEnum = TeamPilgrimPackage.TeamPilgrimSettings.SelectedWorkItemCheckinAction;
var modelsToAdd = currentWorkItems
.Where(workItem => !modelIntersection.Select(workItemModel => workItemModel.WorkItem.Id).Contains(workItem.Id))
.Select(workItem => new WorkItemModel(workItem) { WorkItemCheckinAction = selectedWorkItemCheckinActionEnum }).ToArray();
_backgroundFunctionPreventDataUpdate = true;
foreach (var modelToAdd in modelsToAdd)
{
WorkItems.Add(modelToAdd);
}
foreach (var modelToRemove in modelsToRemove)
{
WorkItems.Remove(modelToRemove);
}
_backgroundFunctionPreventDataUpdate = false;
WorkItemsOnCollectionChanged();
}
}