private void TryUpdatingExpandLockOnParent(WorkItem item) { var parent = WorkflowRepository.GetWorkItem(item.Parent.Id); if (WorkflowRepository.GetChildWorkItems(item.Parent).All(WorkflowRepository.IsDone)) { parent = parent.UpdateStatus(WorkItemStatus.Normal); } else { parent = parent.UpdateStatus(WorkItemStatus.ExpandLocked); } WorkflowRepository.UpdateWorkItem(parent); }
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); }
public IEnumerable <WorkItem> GetChildWorkItems(WorkItemParent parent) { return(WorkflowRepository.GetChildWorkItems(parent)); }