Ejemplo n.º 1
0
        public PlanningApp GeneratePlanningStates(List <StateInitialiserState> stateInitialisers,
                                                  IEnumerable <StateStatus> stateStatus)
        {
            var currentDate = SystemDate.Instance.date;

            foreach (var stateInialiser in stateInitialisers)
            {
                PlanningAppState newPlanningAppState = new PlanningAppState();
                newPlanningAppState.state = stateInialiser;

                PlanningAppState prevState;
                var stateCount = PlanningAppStates.Count;
                if (stateCount > 0)
                {
                    prevState = PlanningAppStates[stateCount - 1];
                    newPlanningAppState.DueByDate = prevState.DueByDate.AddBusinessDays(stateInialiser.CompletionTime);
                }
                else
                {
                    newPlanningAppState.DueByDate = currentDate.AddBusinessDays(stateInialiser.CompletionTime);
                }

                newPlanningAppState.StateStatus = stateStatus.Where(s => s.Name == StatusList.OnTime).SingleOrDefault();
                //Add custom fields to state if exist
                foreach (var stateInitialiserStateCustomField in newPlanningAppState.state.StateInitialiserStateCustomFields)
                {
                    newPlanningAppState.customFields
                    .Add(new PlanningAppStateCustomField {
                        StateInitialiserStateCustomFieldId = stateInitialiserStateCustomField.StateInitialiserCustomFieldId
                    });
                }
                PlanningAppStates.Add(newPlanningAppState);
            }
            //set first state to current state
            if (PlanningAppStates.Count > 0)
            {
                PlanningAppStates[0].CurrentState = true;
            }

            //Set overall Status to InProgress
            CurrentPlanningStatus = stateStatus.Where(s => s.Name == StatusList.AppInProgress).SingleOrDefault();

            return(this);
        }
Ejemplo n.º 2
0
        public PlanningApp InsertNewPlanningState(StateInitialiserState newStateInitialiser, IEnumerable <StateStatus> stateStatus)
        {
            if (!Completed())
            {
                var currentState = Current();

                if (newStateInitialiser.OrderId > currentState.state.OrderId)
                {
                    //Remove states after current state
                    var states = this.PlanningAppStates.ToList();

                    PlanningAppState newState = new PlanningAppState();
                    newState.state          = newStateInitialiser;
                    newState.CurrentState   = false;
                    newState.StateStatus    = stateStatus.Where(s => s.Name == StatusList.OnTime).SingleOrDefault();
                    newState.CompletionDate = null;
                    newState.DueByDate      = DateTime.Now;
                    PlanningAppStates.Add(newState);

                    updateDueByDates();
                }
            }
            return(this);
        }