Ejemplo n.º 1
0
        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);
        }