Example #1
0
        public static bool CheckKernzeitDoppelBesetzungAbgedeckt(this Arbeitstag arbeitstag, GruppenTyp gruppe)
        {
            if (!gruppe.IstFarbGruppe())
            {
                return(true);
            }

            var gruppenzeiten = arbeitstag.GetMitarbeiterArbeitszeiten(gruppe);

            if (gruppenzeiten.Count < 2)
            {
                return(false);
            }

            if (gruppenzeiten.Count == 2)
            {
                var anzDoppelBesetzung = 0;
                foreach (var range in gruppenzeiten)
                {
                    var tp = new TimePeriodCollection(new List <ITimePeriod>()
                    {
                        range
                    });
                    if (tp.HasInside(arbeitstag.KernzeitDoppelBesetzungRange))
                    {
                        anzDoppelBesetzung++;
                    }
                }
                return(anzDoppelBesetzung >= 2);
            }

            //07:00-11:00
            //09:00-13:00
            //11:00-16:00
            var zeitzeiger = arbeitstag.KernzeitDoppelBesetzungRange.Start;

            while (zeitzeiger <= arbeitstag.KernzeitDoppelBesetzungRange.End)
            {
                var count = gruppenzeiten.Count(x => x.HasInside(zeitzeiger));
                if (count < 2)
                {
                    return(false);
                }

                zeitzeiger = zeitzeiger.AddMinutes(1);
            }

            return(true);
        }
Example #2
0
        public static bool CheckKernzeitAbgedeckt(this Arbeitstag arbeitstag, GruppenTyp gruppe)
        {
            if (!gruppe.IstFarbGruppe())
            {
                return(true);
            }

            var gruppenzeiten = arbeitstag.GetMitarbeiterArbeitszeiten(gruppe);

            if (gruppenzeiten.Count == 0)
            {
                return(false);
            }

            var tp         = new TimePeriodCollection(gruppenzeiten);
            var obKernzeit = tp.HasInside(arbeitstag.KernzeitBasisRange);

            return(obKernzeit);
        }
Example #3
0
        public void HasInsideTest()
        {
            DateTime now    = ClockProxy.Clock.Now;
            TimeSpan offset = Duration.Second;
            TimeRangePeriodRelationTestData testData    = new TimeRangePeriodRelationTestData(now, now.AddHours(1), offset);
            TimePeriodCollection            timePeriods = new TimePeriodCollection();

            timePeriods.Add(testData.Reference);

            Assert.False(timePeriods.HasInside(testData.Before));
            Assert.False(timePeriods.HasInside(testData.StartTouching));
            Assert.False(timePeriods.HasInside(testData.StartInside));
            Assert.False(timePeriods.HasInside(testData.InsideStartTouching));
            Assert.True(timePeriods.HasInside(testData.EnclosingStartTouching));
            Assert.True(timePeriods.HasInside(testData.Enclosing));
            Assert.True(timePeriods.HasInside(testData.EnclosingEndTouching));
            Assert.True(timePeriods.HasInside(testData.ExactMatch));
            Assert.False(timePeriods.HasInside(testData.Inside));
            Assert.False(timePeriods.HasInside(testData.InsideEndTouching));
            Assert.False(timePeriods.HasInside(testData.EndInside));
            Assert.False(timePeriods.HasInside(testData.EndTouching));
            Assert.False(timePeriods.HasInside(testData.After));
        }         // HasInsideTest
        public void HasInsideTest() {
            var now = ClockProxy.Clock.Now;
            var offset = DurationUtil.Second;
            var testData = new TimeRangePeriodRelationTestData(now, now.AddHours(1), offset);
            var timePeriods = new TimePeriodCollection
                              {
                                  testData.Reference
                              };

            Assert.IsFalse(timePeriods.HasInside(testData.Before));
            Assert.IsFalse(timePeriods.HasInside(testData.StartTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.StartInside));
            Assert.IsFalse(timePeriods.HasInside(testData.InsideStartTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.EnclosingStartTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.Enclosing));
            Assert.IsTrue(timePeriods.HasInside(testData.EnclosingEndTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.ExactMatch));
            Assert.IsFalse(timePeriods.HasInside(testData.Inside));
            Assert.IsFalse(timePeriods.HasInside(testData.InsideEndTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.EndInside));
            Assert.IsFalse(timePeriods.HasInside(testData.EndTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.After));
        }
Example #5
0
        public void HasInsideTest()
        {
            var now         = ClockProxy.Clock.Now;
            var offset      = DurationUtil.Second;
            var testData    = new TimeRangePeriodRelationTestData(now, now.AddHours(1), offset);
            var timePeriods = new TimePeriodCollection
            {
                testData.Reference
            };

            Assert.IsFalse(timePeriods.HasInside(testData.Before));
            Assert.IsFalse(timePeriods.HasInside(testData.StartTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.StartInside));
            Assert.IsFalse(timePeriods.HasInside(testData.InsideStartTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.EnclosingStartTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.Enclosing));
            Assert.IsTrue(timePeriods.HasInside(testData.EnclosingEndTouching));
            Assert.IsTrue(timePeriods.HasInside(testData.ExactMatch));
            Assert.IsFalse(timePeriods.HasInside(testData.Inside));
            Assert.IsFalse(timePeriods.HasInside(testData.InsideEndTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.EndInside));
            Assert.IsFalse(timePeriods.HasInside(testData.EndTouching));
            Assert.IsFalse(timePeriods.HasInside(testData.After));
        }