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));
        }
Beispiel #2
0
        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));
        }
Beispiel #4
0
 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;
 }
Beispiel #6
0
        public PandBuilder MetTariefPeriode(Tarief t, Periode periode)
        {
            _pand.TariefKalender.InsertWithOverride(periode, t);

            return(this);
        }
Beispiel #7
0
 public PandBuilder MetTarief(Tarief t, double waarde)
 {
     return(MetTarief(t, waarde, null));
 }
 public HuurPrijsPerNacht this[Tarief t]
 {
     get => Find(el => el.TariefType == t);