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));
        }
Example #2
0
 public Reservatie(Pand pand, Klant klant, Periode reservatiePeriode, int aantalPersonen, PrijsOfferte prijsOfferte)
 {
     Pand              = pand;
     Klant             = klant;
     ReservatiePeriode = reservatiePeriode;
     AantalPersonen    = aantalPersonen;
     PrijsOfferte      = prijsOfferte;
 }
Example #3
0
 public AfroepContract(Klant klant, Pand pand, Periode periode, int overnachtingsQuota, VastePrijsPromotie vastePrijsPromotie)
 {
     Klant              = klant;
     Pand               = pand;
     Periode            = periode;
     OvernachtingsQuota = overnachtingsQuota;
     VastePrijsPromotie = vastePrijsPromotie;
 }
 public void MaakCatalogusEnVoegPandenToe(Pand p)
 {
     if (_catalogus == null)
     {
         _catalogus = new HuurPandCatalogus();
     }
     _catalogus.Add(p);
     Assert.IsTrue(_catalogus.Contains(p));
 }
Example #5
0
        public void AfroepContractHeeftKlantPeriodeEnHuurobject()
        {
            Klant              klant              = new Klant(new KlantCategorie(KlantCategorieNaam.Reisbroker), "TravelSL");
            Periode            periode            = new Periode("01/04/2019", "31/12/2019");
            Pand               pand               = TestDataGenerator.GetTestPand();
            int                overnachtingsQuota = 30;
            VastePrijsPromotie contractBonus      = new VastePrijsPromotie(-10000.00);
            AfroepContract     testContract       = new AfroepContract(klant, pand, periode, overnachtingsQuota, contractBonus);

            Assert.IsTrue(testContract.GetType() == typeof(AfroepContract));
        }
Example #6
0
        public PrijsOfferte GetPrijsOfferte(Pand pand, Periode reservatiePeriode, Klant klant, int aantalPersonen)
        {
            _pand = pand;
            _reservatiePeriode = reservatiePeriode;
            _klant             = klant;
            _aantalPersonen    = aantalPersonen;
            AddHuurpijsEnStaffelRegels();
            AddPandRegels();
            AddPromotieRegels();

            return(_prijsOfferte);
        }
Example #7
0
        public void PandReserverenVoorPeriodeOpNaamVanKlant()
        {
            Pand pand = PandBuilder.CreatePand("testvilla").Get();

            pand.MaxAantalPersonen = 6;
            Klant             klant             = new Klant(new KlantCategorie(KlantCategorieNaam.Particulier), "Lathouwers");
            int               aantalPersonen    = 6;
            Periode           reservatiePeriode = new Periode("21/04/2019", "25/04/2019");
            ReservatieBuilder reservatieBuilder = new ReservatieBuilder(PrijsOfferteBuilder);
            Reservatie        testReservatie    = reservatieBuilder.MaakReservatie(pand, klant, reservatiePeriode, aantalPersonen);

            Assert.IsTrue(testReservatie.GetType() == typeof(Reservatie));
        }
        private void AddAfroepContract()
        {
            Klant klant = RentAVillaRentingService.KlantenBestand.Find(kl => kl.Naam == "Traveling Lathouwers NV");
            Pand  pand  = RentAVillaRentingService.HuurPanden.Find(p => p.Land == ActieveLanden.Frankrijk);
            VastePrijsPromotie vastePrijsPromotie = new VastePrijsPromotie(-2500);
            int overnachtingsQuota = 50;

            RentAVillaRentingService.AfroepContracten.Add(new AfroepContract(klant,
                                                                             pand,
                                                                             new Periode("01/04/2019",
                                                                                         "01/09/2019"),
                                                                             overnachtingsQuota,
                                                                             vastePrijsPromotie));
        }
        public void GivenPandenKlanten_CanCreateReservatieWithPrijsOfferteAndAddToReservatieBoek()
        {
            CreateRentingService();
            AddTestPandenToCatalogus(4);
            AddKlantCatergorieParticulierEnReisbureau();
            AddParticulierAndReisbureauToKlantenBestand();
            Periode    reservatiePeriode = new Periode("10/06/2019", "19/06/2019");
            Klant      particulier       = RentAVillaRentingService.KlantenBestand.Find(kl => kl.Naam == "Lathouwers");
            Pand       pand           = RentAVillaRentingService.HuurPanden.Find(p => p.Land == ActieveLanden.Frankrijk);
            int        aantalPersonen = 6;
            Reservatie testReservatie =
                RentAVillaRentingService.ReservatieBuilder.MaakReservatie(pand, particulier, reservatiePeriode, aantalPersonen);

            RentAVillaRentingService.ReservatieBoek.Add(testReservatie);

            Assert.IsTrue(RentAVillaRentingService.ReservatieBoek.GetAll().Count == 1);
            Assert.IsTrue(!RentAVillaRentingService.ReservatieBoek.PandIsVrijVoorPeriode(pand, reservatiePeriode));
        }
Example #10
0
        public static Pand GetTestPand(ActieveLanden actieveLand)
        {
            Pand p = PandBuilder
                     .CreatePand("testpand")
                     .MetLocation(actieveLand,
                                  GetRegio(),
                                  "TestPlaats")
                     .MetPrijzen((SchoonmaakPrijs)GetRandomDoubleBetween(50, 150),
                                 (Waarborg)GetRandomDoubleBetween(500, 950),
                                 (PersoonsToeslagPerNacht)GetRandomDoubleBetween(10, 25))
                     .MetLimieten(GetRandomIntegerBetween(6, 15),
                                  GetRandomIntegerBetween(1, 6))
                     .Get();

            p.TariefKalender = GetTariefKalender();
            p.TarievenLijst  = GetTestTarievenLijst();

            return(p);
        }
Example #11
0
 public bool PandIsVrijVoorPeriode(Pand pand, Periode periode)
 {
     return(!_reservaties.Any(res => res.Pand == pand && res.ReservatiePeriode.Overlapt(periode)));
 }
Example #12
0
 public void NewPandCreated()
 {
     Pand = PandBuilder.CreatePand("testvilla").Get();
     Assert.IsInstanceOfType(Pand, typeof(Pand));
 }