private void AddControl() { DateTime beforeDay = GenerationData.CurrentDay; if (scheduleDay.CanAddShift()) // if all shifts not used. { scheduleDay.AddLogic(); scheduleLine = (CoatingScheduleLine)scheduleDay.ChildrenLogic.Last(); // add a shift } else { // advance a day and remove expected inventory GenerationData.CurrentDay = ShiftHandler.CoatingInstance.GetNextWorkingDay(GenerationData.CurrentDay); schedule.AddLogic(); scheduleDay = (CoatingScheduleDay)schedule.ChildrenLogic.Last(); scheduleDay.Date = GenerationData.CurrentDay; scheduleDay.AddLogic(); scheduleLine = (CoatingScheduleLine)scheduleDay.ChildrenLogic.Last(); } // decrement inventory int daysAdded = (GenerationData.CurrentDay - beforeDay).Days; if (daysAdded > 0) { GenerationData.DecrementInventory(daysAdded); } GenerationData.AddPressProduction(); // reset the state for the next shift GenerationData.ResetForNextShift(); }