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); }
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); }
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)); }
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)); }