public WhatIfResult OnComplete(ProjectItem projectItem, DateTime completedDate, bool addNewPeriodics) { Assertion.Require(projectItem, "projectItem"); this.whatIfResult = new WhatIfResult(projectItem, ProjectItemOperation.Complete); // Add root state change var stateChange = new ProjectItemStateChange(projectItem, ProjectItemOperation.Complete) { ActualEndDate = completedDate }; whatIfResult.AddStateChange(stateChange); // Update related UpdateRelatedProjectItemsDeadlines(projectItem, completedDate); if (addNewPeriodics) { var newPeriodicResult = ModelingServices.TryGetNextPeriodic(projectItem, completedDate); if (newPeriodicResult != null) { this.whatIfResult.AddStateChanges(newPeriodicResult.StateChanges); } } return(this.whatIfResult); }
static private void CreateNextPeriodicIfNecessary(ProjectItem projectItem, DateTime completedDate) { var nextPeriodicResult = ModelingServices.TryGetNextPeriodic(projectItem, completedDate); if (nextPeriodicResult == null) { return; } StoreChanges(nextPeriodicResult); projectItem.Project.MoveTo(nextPeriodicResult.StateChanges[0].ProjectItem, TreeItemInsertionRule.AsSiblingAfterInsertionPoint, projectItem); }