public static bool NeedPause(this PlanItem dienst, out int pause) { pause = 0; if (dienst.Zeitraum.Duration.NeedPause()) { pause = 30; return(true); } //wenn keine Pause aber Großteam noch ist if (dienst.HatGrossteam) { var tp = new TimePeriodCollection(new List <ITimePeriod>() { dienst.Zeitraum, dienst.Arbeitstag.Grossteam }); if (tp.HasGaps()) { var gapCalculator = new TimeGapCalculator <TimeRange>(new TimeCalendar()); var gaps = gapCalculator.GetGaps(tp); var gap = (int)Math.Round(gaps.First().Duration.TotalMinutes, MidpointRounding.ToEven); //sollte nur eine geben, sind ja nur 2 Zeiten if (gap < 30) { pause = 30 - gap; return(true); } } else { var periodCombiner = new TimePeriodCombiner <TimeRange>(); var combinedPeriods = periodCombiner.CombinePeriods(tp); if (combinedPeriods.First().Duration.NeedPause()) { pause = 30; return(true); } } } return(false); }