public void InsertWhereBeschikbaar(Periode periode, Tarief tarief) { Tarief laatsteType; var overlaps = this.Where(registratie => periode.Overlapt(registratie.StartDatum)); IEnumerable <TariefKalenderRegistratie> tariefKalenderRegistraties = overlaps.ToList(); if (tariefKalenderRegistraties.Count() != 0) { laatsteType = this.Single(registratie => registratie.StartDatum == tariefKalenderRegistraties.Max(overlapReg => overlapReg.StartDatum)).TariefType; ForEach(registratie => { registratie.TariefType = registratie.TariefType != Tarief.Onbeschikbaar ? tarief : Tarief.Onbeschikbaar; }); } else { var registratiesVoorEind = this.Where(registratie => registratie.StartDatum < periode.Eind); laatsteType = this.Single(registratie => registratie.StartDatum == registratiesVoorEind.Max(reg => reg.StartDatum)).TariefType; } //Add period.Start and tarief as new registration if (!Exists(registratie => registratie.StartDatum == periode.Start)) { Add(new TariefKalenderRegistratie(periode.Start, tarief)); } Add(new TariefKalenderRegistratie(periode.Eind, laatsteType)); }
public void InsertWithOverride(Periode periode, Tarief tarief) { Tarief laatsteType; //Delete all overlapping KalenderRegistraties except last registration in periode => set startdate equal to periode.eindeq var overlaps = this.Where(registratie => periode.Overlapt(registratie.StartDatum)); IEnumerable <TariefKalenderRegistratie> tariefKalenderRegistraties = overlaps.ToList(); if (tariefKalenderRegistraties.Count() != 0) { laatsteType = this.Single(registratie => registratie.StartDatum == tariefKalenderRegistraties.Max(overlapReg => overlapReg.StartDatum)).TariefType; RemoveAll(registratie => periode.Overlapt(registratie.StartDatum)); } else { var registratiesVoorStart = this.Where(registratie => registratie.StartDatum < periode.Start); laatsteType = this.Single(registratie => registratie.StartDatum == registratiesVoorStart.Max(reg => reg.StartDatum)).TariefType; } //Add period.Start and tarief as new registration Add(new TariefKalenderRegistratie(periode.Start, tarief)); Add(new TariefKalenderRegistratie(periode.Eind, laatsteType)); }
public void OverlaptDatumTest() { var periode = new Periode(_start, _eind); Assert.IsTrue(periode.Overlapt(_start.AddDays(1))); }
public void OverlapTest(Periode p1, Periode p2, bool caseResult, string caseDefinition) { Assert.IsTrue(p1.Overlapt(p2) == caseResult, $"Case '{caseDefinition}' failed."); }