private WorkItem MergeParallelWorkItems(WorkItemTransition transition) { var unlockedParentWorkItem = WorkflowRepository.GetWorkItem(transition.WorkItem.Parent.Id).UpdateStatus(WorkItemStatus.Normal); WorkflowRepository.UpdateWorkItem(unlockedParentWorkItem); foreach (var childWorkItem in WorkflowRepository.GetChildWorkItems(transition.WorkItem.Parent).ToList()) { if (WorkflowRepository.IsExpandStep(transition.WorkStep)) { CleanUpIfMovingFromExpandStep(new WorkItemTransition(childWorkItem, transition.WorkStep)); } WorkflowRepository.DeleteWorkItem(childWorkItem.Id); } return(unlockedParentWorkItem); }
private void DeleteWorkItemRecursively(WorkItem workItem) { var expandedChildWorkItems = WorkflowRepository.GetChildWorkItems(workItem.AsParent(WorkItemParentType.Expanded)); var parallelChildWorkItems = WorkflowRepository.GetChildWorkItems(workItem.AsParent(WorkItemParentType.Parallelled)); var childWorkItems = expandedChildWorkItems.Concat(parallelChildWorkItems); if (childWorkItems.Count() > 0) { foreach (var childWorkItem in childWorkItems) { DeleteWorkItemRecursively(childWorkItem); } } WorkflowRepository.DeleteWorkItem(workItem.Id); CleanUpIfInExpandStep(workItem); }