public Reservatie MaakReservatie(Pand pand, Klant klant, Periode reservatiePeriode, int aantalPersonen)
        {
            // pand beschikbaar voor reservatiePeriode?
            if (pand.GetOnbeschikbareNachten(reservatiePeriode).Any())
            {
                throw new ArgumentException("Pand is onbeschikbaar voor periode" +
                                            $" {string.Join(", ", pand.GetOnbeschikbareNachten(reservatiePeriode))}");
            }

            // reservatie voor geldig aantal personen?
            if (pand.MaxAantalPersonen < aantalPersonen)
            {
                throw new ArgumentException($"Reservatie voor {aantalPersonen} " +
                                            $"personen overschrijdt maximum van {pand.MaxAantalPersonen} personen");
            }

            // reservatie voor geldige verblijfsduur?
            if (pand.MinVerblijfsduur > reservatiePeriode.AantalNachten)
            {
                throw new ArgumentException($"Reservatie voor {reservatiePeriode.AantalNachten} " +
                                            $"nachten voldoet niet aan minimum van {pand.MinVerblijfsduur} nachten");
            }
            PrijsOfferte prijsOfferte = _prijsOfferteBuilder.GetPrijsOfferte(pand, reservatiePeriode, klant, aantalPersonen);

            return(new Reservatie(pand, klant, reservatiePeriode, aantalPersonen, prijsOfferte));
        }
示例#2
0
 public Reservatie(Pand pand, Klant klant, Periode reservatiePeriode, int aantalPersonen, PrijsOfferte prijsOfferte)
 {
     Pand              = pand;
     Klant             = klant;
     ReservatiePeriode = reservatiePeriode;
     AantalPersonen    = aantalPersonen;
     PrijsOfferte      = prijsOfferte;
 }
示例#3
0
        public void MaakPrijsOfferteMetPrijsComponenten()
        {
            int          aantalPersonen = 6;
            int          aantalNachten  = 7;
            PrijsOfferte offerte        = new PrijsOfferte();

            HuurPrijsPerNacht       huurPrijsPerNacht       = new HuurPrijsPerNacht(Tarief.Hoogseizoen, 127.00);
            Waarborg                waarborg                = new Waarborg(500.00);
            SchoonmaakPrijs         schoonmaak              = new SchoonmaakPrijs(100.00);
            PersoonsToeslagPerNacht persoonsToeslagPerNacht = new PersoonsToeslagPerNacht(25);
            Periode             promotiePeriode             = new Periode("21/04/2019", "31/12/2019");
            VastePrijsPromotie  vastePrijsPromotie          = new VastePrijsPromotie(promotiePeriode, -250.00);
            PercentuelePromotie reservatieKorting           = new PercentuelePromotie(promotiePeriode, -0.10, offerte);
            PercentuelePromotie huurPrijsPromotie           = new PercentuelePromotie(promotiePeriode, -0.5, huurPrijsPerNacht);

            offerte.Add(huurPrijsPerNacht, aantalNachten);
            offerte.Add(waarborg);
            offerte.Add(schoonmaak);
            offerte.Add(persoonsToeslagPerNacht, aantalNachten * aantalPersonen);
            offerte.Add(vastePrijsPromotie);
            offerte.Add(reservatieKorting);
            offerte.Add(huurPrijsPromotie, aantalNachten);
            Assert.IsTrue(offerte.Waarde != 0);
        }