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 PandBuilder MetTarief(Tarief t, double waarde, Periode periode) { if (periode != null) { _pand.TariefKalender.InsertWithOverride(periode, t); } _pand.TarievenLijst.Update(t, waarde); return(this); }
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 TariefKalenderRegistratie(DateTime datum, Tarief type) { StartDatum = datum; TariefType = type; }
/// <summary> /// Maakt een tariefgebonden huurprijs per nacht /// </summary> /// <param name="tarief"></param> /// <param name="waarde"></param> public HuurPrijsPerNacht(Tarief tarief, double waarde) { Waarde = waarde; TariefType = tarief; }
public PandBuilder MetTariefPeriode(Tarief t, Periode periode) { _pand.TariefKalender.InsertWithOverride(periode, t); return(this); }
public PandBuilder MetTarief(Tarief t, double waarde) { return(MetTarief(t, waarde, null)); }
public HuurPrijsPerNacht this[Tarief t] { get => Find(el => el.TariefType == t);