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)); }
public Reservatie(Pand pand, Klant klant, Periode reservatiePeriode, int aantalPersonen, PrijsOfferte prijsOfferte) { Pand = pand; Klant = klant; ReservatiePeriode = reservatiePeriode; AantalPersonen = aantalPersonen; PrijsOfferte = prijsOfferte; }
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); }