public void NextState(List <StateStatus> statusList) { if (!Completed()) { PlanningAppStates = PlanningAppStates.OrderBy(s => s.state.OrderId).ToList(); var currentDate = SystemDate.Instance.date; var prevState = Current(); //Store reference to current state if (!isLastState(prevState)) { SeekNext().CurrentState = true; //move to next state } prevState.CompleteState(currentDate, statusList); //Close out previouse state //If Overran then roll all future completion dates by business days overdue if (currentDate > prevState.DueByDate) { var daysDiff = prevState.DueByDate.GetBusinessDays(currentDate, new List <DateTime>()); RollForwardDueByDates(daysDiff, prevState); } } if (Completed()) { CurrentPlanningStatus = statusList.Where(s => s.Name == StatusList.Complete).SingleOrDefault(); } }
public void generateDueByDates() { if (!Completed()) { //Important - put states in order before processing!! PlanningAppStates = PlanningAppStates.OrderBy(s => s.state.OrderId).ToList(); var prevState = new PlanningAppState(); var currState = Current(); var resetCurrent = Current(); while (currState != null) { if (!isFirstState(currState)) { prevState = SeekPrev(); currState.AggregateDueByDate(prevState); } else { currState.SetDueByDate(); } currState = Next(currState); } //Set original state SetCurrent(resetCurrent); } }
public void updateDueByDates() //Called when inserting a new state to an existing planning app { if (!Completed()) { //Important - put states in order before processing!! PlanningAppStates = PlanningAppStates.OrderBy(s => s.state.OrderId).ToList(); var prevState = new PlanningAppState(); var currState = Current(); var resetCurrent = Current(); while (currState != null) { if (!isFirstState(currState)) { prevState = SeekPrev(); currState.AggregateDueByDate(prevState); } currState = Next(currState); } //Set original state SetCurrent(resetCurrent); } }