Esempio n. 1
0
        private void ReservatieAanmakenButton_Click(object sender, RoutedEventArgs e)
        {
            if (KlantNrTextBox.Text != null && DataGridLimousines.SelectedItem != null)
            {
                int               klantNr         = int.Parse(KlantNrTextBox.Text);
                DateTime          startDatum      = (DateTime)DatePickerCalender.SelectedDate;
                Arrengement       arrengement     = (Arrengement)ArrengementTypeList.SelectedItem;
                int               startUur        = (int)BeschikbareUrenList.SelectedItem;
                int               duur            = (int)DuurLijst.SelectedItem;
                int               limoId          = ((Limousine)DataGridLimousines.SelectedItem).Id;
                string            verwachtAdres   = VerwachtAdresTextBox.Text;
                StalLocatie       EindStalPlaats  = (StalLocatie)EindLocatieComboBox.SelectedItem;
                StalLocatie       StartStalPlaats = (StalLocatie)StartLocatieComboBox.SelectedItem;
                ReservatieManager rM     = new ReservatieManager(new ReservatieDatabaseHandler());
                Reservatie        toShow = rM.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, StartStalPlaats, EindStalPlaats, verwachtAdres);

                ReservatieDetailsWindow detailsWindow = new ReservatieDetailsWindow(toShow);
                detailsWindow.Show();
                this.Close();
            }
            else
            {
                MessageBox.Show("Gelieve een klantenNummer in te vullen en een voertuig te selecteren.", "Onvolledige reservering", MessageBoxButton.OK);
            }
        }
        public void KortingCorrectToegepastMetEindeVanHetJaar_Test()
        {
            ReservatieManager rm = new ReservatieManager(new TestDataBaseHandler());

            rm.VoegStaffelKortingToe("test", new List <int> {
                0, 2, 4, 6
            }, new List <double> {
                0, 8, 15, 20
            });

            string klantNaam        = "testklant1";
            string klantenCategorie = "test";
            string btwNummer        = "TestBTwNummer123456789";
            string adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 200;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 12, 31);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = 23;
            int         duur          = 7;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";


            rm.ReservatieMakenZonderReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            startDatum = startDatum.AddDays(1);
            Reservatie res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.VastePrijs == 2500);
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 2500);

            startDatum = startDatum.AddDays(1);
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.VastePrijs == 2500);
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 2500);

            startDatum = startDatum.AddDays(1);
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.VastePrijs == 2500);
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 2300);
        }
        public void WeddingArrengement_Test()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 200;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            string klantNaam2        = "testklant12";
            string klantenCategorie2 = "testCategorie";
            string btwNummer2        = "TestBTwNummer123456789";
            string adres2            = "TestAdres";

            rm.VoegKlantToe(klantNaam2, klantenCategorie2, btwNummer2, adres2);

            string klantNaam3        = "EenAndereKlantOmLeegTeLaten";
            string klantenCategorie3 = "testCategorie";
            string btwNummer3        = "TestBTwNummer123456789";
            string adres3            = "TestAdres";

            rm.VoegKlantToe(klantNaam3, klantenCategorie3, btwNummer3, adres3);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.Wedding;
            int         startUur      = 15;
            int         duur          = 11;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";
            Reservatie  res           = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 0);
            Assert.IsTrue(res.AantalStandaardUur == 0);
            Assert.IsTrue(res.AantalOverUur == 4);
            Assert.IsTrue(res.OverUurPrijs == 130);
            Assert.IsTrue(res.AantalNachtUur == 0);
            Assert.IsTrue(res.VastePrijs == 3000);
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 3520, "Totaal werd niet correct berekend");
        }
        public void WeddingArrangementDuurtAltijdMinstens7Uur_ZouIncorrecteParameterExceptionMoetenGeven()
        {
            Klant     klant = new Klant();
            Limousine limo  = new Limousine();

            DateTime    startDatum    = new DateTime(2100, 12, 31, 1, 0, 0);
            Arrengement arrengement   = Arrengement.Wedding;
            int         startUur      = 22;
            int         duur          = 6;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            Reservatie res = new Reservatie(klant, startDatum, arrengement, startUur, duur, limo, DateTime.Now, stalLocatie, eindLocatie, verwachtAdres, 0);
        }
        public void NightlifeArrangementMagNietVroegerDan20UurBeginnen_ZouIncorrecteParameterExceptionMoetenGeven()
        {
            Klant     klant = new Klant();
            Limousine limo  = new Limousine();

            DateTime    startDatum    = new DateTime(2100, 12, 31, 1, 0, 0);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = 19;
            int         duur          = 7;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            Reservatie res = new Reservatie(klant, startDatum, arrengement, startUur, duur, limo, DateTime.Now, stalLocatie, eindLocatie, verwachtAdres, 0);
        }
        public void ReservatieAanmakenZonderDuur_ZouIncorrecteParameterExceptionMoetenGeven()
        {
            Klant     klant = new Klant();
            Limousine limo  = new Limousine();

            DateTime    startDatum    = new DateTime(2100, 12, 31, 1, 0, 0);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = -1;
            int         duur          = 0;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            Reservatie res = new Reservatie(klant, startDatum, arrengement, startUur, duur, limo, DateTime.Now, stalLocatie, eindLocatie, verwachtAdres, 0);
        }
        static void Main(string[] args)
        {
            ReservatieManager rm = new ReservatieManager(new TestDataBaseHandler());

            rm.VoegStaffelKortingToe("test", new List <int> {
                0, 2, 4, 6
            }, new List <double> {
                0, 8, 15, 20
            });

            string klantNaam        = "testklant1";
            string klantenCategorie = "test";
            string btwNummer        = "TestBTwNummer123456789";
            string adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 200;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = 23;
            int         duur          = 7;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            startDatum = startDatum.AddDays(1);
            Reservatie res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);


            startDatum = startDatum.AddDays(1);
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);



            Console.WriteLine();
        }
        public void TarievenBerekeningAfronding_Test()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 150;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            string klantNaam2        = "testklant12";
            string klantenCategorie2 = "testCategorie";
            string btwNummer2        = "TestBTwNummer123456789";
            string adres2            = "TestAdres";

            rm.VoegKlantToe(klantNaam2, klantenCategorie2, btwNummer2, adres2);

            string klantNaam3        = "EenAndereKlantOmLeegTeLaten";
            string klantenCategorie3 = "testCategorie";
            string btwNummer3        = "TestBTwNummer123456789";
            string adres3            = "TestAdres";

            rm.VoegKlantToe(klantNaam3, klantenCategorie3, btwNummer3, adres3);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.Business;
            int         startUur      = 7;
            int         duur          = 3;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";
            Reservatie  res           = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 350, "Totaal werd niet correct berekend");
            Assert.IsTrue(res.TotaalTeBetalen == 371, "btw percentage werd niet correct toegevoegd");
        }
        public void ReservatieToevoegen_Test()
        {
            ReservatieManager rm = new ReservatieManager(new TestDataBaseHandler());
            //Limo maken
            string naam            = "testLimo1";
            int    uurPrijs        = 150;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs2   = 3000;
            int    wellnessPrijs3  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs2, wellnessPrijs3);
            //klant maken
            string klantNaam        = "testklant1";
            string klantenCategorie = "testCategorie";
            string btwNummer        = "TestBTwNummer123456789";
            string adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);
            //reservatie
            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 12);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = 22;
            int         duur          = 10;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Reservatie res   = rm.VindReservatieVoorReservatieNummer(1);
            Klant      klant = rm.VindVolledigeKlantVoorKlantNummer(1);
            Limousine  limo  = rm.VindLimousineVoorId(1);

            Assert.AreEqual(res.Klant, klant);
            Assert.AreEqual(res.Limousine, limo);
            Assert.AreEqual(res.StartMoment, startDatum.AddHours(startUur));
            Assert.AreEqual(res.AantalUur, duur);
            Assert.AreEqual(res.StartStalLocatie, stalLocatie);
            Assert.AreEqual(res.AankomstStalLocatie, eindLocatie);
            Assert.AreEqual(res.VerwachtAdres, verwachtAdres);
        }
        public void NachtuurBerekeningVoorBusinessEnAirport_Test()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 200;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.Business;
            int         startUur      = 1;
            int         duur          = 11;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";
            Reservatie  res           = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.EersteUurPrijs == 200);
            Assert.IsTrue(res.AantalStandaardUur == 5);
            Assert.IsTrue(res.StandaarUurPrijs == 130);
            Assert.IsTrue(res.AantalNachtUur == 5);
            Assert.IsTrue(res.NachtUurPrijs == 280);
            Assert.IsTrue(res.TotaalMetKortingExclusiefBtw == 2250, "Totaal werd niet correct berekend");


            startDatum = startDatum.AddDays(1);
            startUur   = 20;
            duur       = 11;
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.AantalStandaardUur == 1);
            Assert.IsTrue(res.AantalNachtUur == 9);

            startDatum = startDatum.AddDays(1);
            startUur   = 21;
            duur       = 11;
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.AantalStandaardUur == 1);
            Assert.IsTrue(res.AantalNachtUur == 9);

            startDatum = startDatum.AddDays(1);
            startUur   = 18;
            duur       = 11;
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.AantalStandaardUur == 3);
            Assert.IsTrue(res.AantalNachtUur == 7);

            startDatum = startDatum.AddDays(1);
            startUur   = 7;
            duur       = 11;
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.AantalStandaardUur == 10);
            Assert.IsTrue(res.AantalNachtUur == 0);

            startDatum = startDatum.AddDays(1);
            startUur   = 6;
            duur       = 11;
            res        = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.AantalEersteUur == 1);
            Assert.IsTrue(res.AantalStandaardUur == 10);
            Assert.IsTrue(res.AantalNachtUur == 0);
        }
        public void AfrondingenOpTarieven_Test()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 150;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            string klantNaam2        = "testklant12";
            string klantenCategorie2 = "testCategorie";
            string btwNummer2        = "TestBTwNummer123456789";
            string adres2            = "TestAdres";

            rm.VoegKlantToe(klantNaam2, klantenCategorie2, btwNummer2, adres2);

            string klantNaam3        = "EenAndereKlantOmLeegTeLaten";
            string klantenCategorie3 = "testCategorie";
            string btwNummer3        = "TestBTwNummer123456789";
            string adres3            = "TestAdres";

            rm.VoegKlantToe(klantNaam3, klantenCategorie3, btwNummer3, adres3);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.Business;
            int         startUur      = 18;
            int         duur          = 10;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";
            Reservatie  res           = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 210, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo2";
            uurPrijs        = 151;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 210, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo3";
            uurPrijs        = 152;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 215, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo4";
            uurPrijs        = 153;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 215, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo5";
            uurPrijs        = 154;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 215, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo6";
            uurPrijs        = 155;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 215, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo7";
            uurPrijs        = 156;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 220, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo8";
            uurPrijs        = 157;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 100, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 220, "De nachtuur prijs werd niet correct afgerond.");

            startDatum      = startDatum.AddDays(1);
            naam            = "testLimo9";
            uurPrijs        = 158;
            nightlifePrijs1 = 2500;
            weddingPrijs1   = 3000;
            wellnessPrijs1  = 4213;
            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);
            limoId++;
            res = rm.ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);
            Assert.IsTrue(res.StandaarUurPrijs == 105, "De standaard uurprijs werd niet correct afgerond.");
            Assert.IsTrue(res.NachtUurPrijs == 220, "De nachtuur prijs werd niet correct afgerond.");
        }
        public Reservatie ReservatieMakenEnReturnen(int klantNr, DateTime startDatum, Arrengement arrengement, int startUur, int duur, int limoId, StalLocatie startStalLocatie, StalLocatie aankomstStalLocatie, string verwachtAdres)
        {
            Klant     klant   = VindVolledigeKlantVoorKlantNummer(klantNr);
            Limousine limo    = VindLimousineVoorId(limoId);
            double    korting = 0;

            if (klant.Categorie.StaffelKorting != null)
            {
                korting = BerekenKortingsPercentage(klant, startDatum);
            }
            Reservatie res = new Reservatie(klant, startDatum, arrengement, startUur, duur, limo, DateTime.Now, startStalLocatie, aankomstStalLocatie, verwachtAdres, korting);

            VoegReservatieToe(res);
            return(res);
        }
 public void ReservatieMakenZonderReturnen(int klantNr, DateTime startDatum, Arrengement arrengement, int startUur, int duur, int limoId, StalLocatie startStalLocatie, StalLocatie aankomstStalLocatie, string verwachtAdres)
 {
     var res = ReservatieMakenEnReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, startStalLocatie, aankomstStalLocatie, verwachtAdres);
 }
        public Reservatie(Klant klant, DateTime startDatum, Arrengement arrengement, int startUur, int aantalUur, Limousine limo, DateTime datumVanAanmaakReservatie,
                          StalLocatie startStalLocatie, StalLocatie aankomstStalLocatie, string verwachtAdres, double aangerekendeKorting)
        {
            if (startDatum.Hour != 0)
            {
                throw new IncorrectParameterException("Startdatum werd niet correct geleverd: mag geen uur bevatten, dit wordt in de startuur parameter geleverd");
            }
            if (startDatum.Minute != 0)
            {
                throw new IncorrectParameterException("Startdatum mag  geen minuten bevatten: Reservaties beginnen altijd op het uur");
            }
            if (startUur < 0 || aantalUur < 0)
            {
                throw new IncorrectParameterException("Startuur en aantal uur mogen niet negatief zijn");
            }
            if (aantalUur > 11 || aantalUur == 0)
            {
                throw new IncorrectParameterException("Elk arrengement moet minstens 1u duren en mag niet langer duren dan 11u");
            }
            //business regels
            if (arrengement == Arrengement.Wellness)
            {
                if (aantalUur != 10)
                {
                    throw new IncorrectParameterException("Een wellness arrengement duurt altijd 10u");
                }
                if (startUur > 12 || startUur < 7)
                {
                    throw new IncorrectParameterException("Een wellness arrengement begint altijd tussen 7 en 12u");
                }
            }
            else if (arrengement == Arrengement.NightLife)
            {
                if (aantalUur < 7)
                {
                    throw new IncorrectParameterException("Een nightlife arrengement duurt altijd minstens 7u");
                }
                if (startUur < 20 && startUur != 0)
                {
                    throw new IncorrectParameterException("Een nightlife arrengement begint altijd tussen 20 en 24u");
                }
            }
            else if (arrengement == Arrengement.Wedding)
            {
                if (aantalUur < 7)
                {
                    throw new IncorrectParameterException("Een wedding arrengement duurt altijd minstens 7u");
                }
                if (startUur > 15 || startUur < 7)
                {
                    throw new IncorrectParameterException("Een wedding arrengement begint altijd tussen 7 en 15u");
                }
            }
            StartMoment = startDatum.AddHours(startUur);
            if (StartMoment < datumVanAanmaakReservatie)
            {
                throw new IncorrectParameterException("Er mag geen reservatie in het verleden worden aangemaakt.");
            }
            Klant = klant;
            DatumVanReservering = datumVanAanmaakReservatie;
            // ReserveringsNummer = reservatieNummer;
            Limousine           = limo;
            StartStalLocatie    = startStalLocatie;
            AankomstStalLocatie = aankomstStalLocatie;
            Arrengement         = arrengement;
            AantalUur           = aantalUur;
            AangerekendeKorting = aangerekendeKorting;
            VerwachtAdres       = verwachtAdres;

            if (TotaalTeBetalen == 0)
            {
                PrijsBerekening();
            }
        }
        public void VindReservatiesVoorKlantNaamEnDatumTest()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 150;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            string klantNaam2        = "testklant12";
            string klantenCategorie2 = "testCategorie";
            string btwNummer2        = "TestBTwNummer123456789";
            string adres2            = "TestAdres";

            rm.VoegKlantToe(klantNaam2, klantenCategorie2, btwNummer2, adres2);

            string klantNaam3        = "EenAndereKlantOmLeegTeLaten";
            string klantenCategorie3 = "testCategorie";
            string btwNummer3        = "TestBTwNummer123456789";
            string adres3            = "TestAdres";

            rm.VoegKlantToe(klantNaam3, klantenCategorie3, btwNummer3, adres3);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 13);
            Arrengement arrengement   = Arrengement.NightLife;
            int         startUur      = 22;
            int         duur          = 9;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            int         klantNr2       = 2;
            int         limoId2        = 1;
            DateTime    startDatum2    = new DateTime(2100, 8, 13);
            Arrengement arrengement2   = Arrengement.NightLife;
            int         startUur2      = 22;
            int         duur2          = 7;
            StalLocatie stalLocatie2   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie2   = StalLocatie.Gent;
            string      verwachtAdres2 = "testAdres2 50 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr2, startDatum2, arrengement2, startUur2, duur2, limoId2, stalLocatie2, eindLocatie2, verwachtAdres2);

            int         klantNr3       = 2;
            int         limoId3        = 1;
            DateTime    startDatum3    = new DateTime(2100, 8, 14);
            Arrengement arrengement3   = Arrengement.NightLife;
            int         startUur3      = 22;
            int         duur3          = 7;
            StalLocatie stalLocatie3   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie3   = StalLocatie.Gent;
            string      verwachtAdres3 = "testAdres3 75 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr3, startDatum3, arrengement3, startUur3, duur3, limoId3, stalLocatie3, eindLocatie3, verwachtAdres3);

            var result = rm.VindReservatiesVoorKlantNaamEnDatum(klantNaam, startDatum);

            Assert.IsTrue(result.Count == 2);
            result = rm.VindReservatiesVoorKlantNaamEnDatum(klantNaam2, startDatum);
            Assert.IsTrue(result.Count == 1);
            result = rm.VindReservatiesVoorKlantNaamEnDatum(klantNaam3, startDatum3);
            Assert.IsTrue(result.Count == 0);
        }
        public void GeefBeschikbareLimousines_Test_ControleerKoppeling()
        {
            ReservatieManager rm               = new ReservatieManager(new TestDataBaseHandler());
            string            klantNaam        = "testklant1";
            string            klantenCategorie = "testCategorie";
            string            btwNummer        = "TestBTwNummer123456789";
            string            adres            = "TestAdres";

            rm.VoegKlantToe(klantNaam, klantenCategorie, btwNummer, adres);

            string naam            = "testLimo1";
            int    uurPrijs        = 150;
            int    nightlifePrijs1 = 2500;
            int    weddingPrijs1   = 3000;
            int    wellnessPrijs1  = 4213;

            rm.VoegLimousineToe(naam, uurPrijs, nightlifePrijs1, weddingPrijs1, wellnessPrijs1);

            string naam2           = "testLimo2";
            int    uurPrijs2       = 150;
            int    nightlifePrijs2 = 2500;
            int    weddingPrijs2   = 3000;
            int    wellnessPrijs2  = 4213;

            rm.VoegLimousineToe(naam2, uurPrijs2, nightlifePrijs2, weddingPrijs2, wellnessPrijs2);

            int         klantNr       = 1;
            int         limoId        = 1;
            DateTime    startDatum    = new DateTime(2100, 8, 12);
            Arrengement arrengement   = Arrengement.Business;
            int         startUur      = 7;
            int         duur          = 3;
            StalLocatie stalLocatie   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie   = StalLocatie.Gent;
            string      verwachtAdres = "testAdres1 25 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr, startDatum, arrengement, startUur, duur, limoId, stalLocatie, eindLocatie, verwachtAdres);

            int         klantNr2       = 1;
            int         limoId2        = 2;
            DateTime    startDatum2    = new DateTime(2100, 8, 12);
            Arrengement arrengement2   = Arrengement.Airport;
            int         startUur2      = 13;
            int         duur2          = 7;
            StalLocatie stalLocatie2   = StalLocatie.Antwerpen;
            StalLocatie eindLocatie2   = StalLocatie.Gent;
            string      verwachtAdres2 = "testAdres1 25 testGemeente";

            rm.ReservatieMakenZonderReturnen(klantNr2, startDatum2, arrengement2, startUur2, duur2, limoId2, stalLocatie2, eindLocatie2, verwachtAdres2);

            DateTime startMoment1 = startDatum.AddHours(startUur);
            DateTime startMoment2 = startDatum2.AddHours(startUur2);

            Assert.IsTrue(rm.GeefBeschikbareLimousinesVoorPeriode(startMoment1, startMoment1.AddHours(duur)).Count == 0);
            Assert.IsTrue(rm.GeefBeschikbareLimousinesVoorPeriode(new DateTime(2101, 8, 12, 10, 0, 0), new DateTime(2101, 8, 12, 19, 0, 0)).Count == 2);
            Assert.IsTrue(rm.GeefBeschikbareLimousinesVoorPeriode(startMoment1.AddHours(-12), startMoment1.AddHours(-6)).Count == 2);
            Assert.IsTrue(rm.GeefBeschikbareLimousinesVoorPeriode(startMoment2.AddHours(duur2 + 7), startMoment2.AddHours(duur2 + 8)).Count == 2);
            var limos = rm.GeefBeschikbareLimousinesVoorPeriode(startMoment1.AddHours(duur + 6), startMoment1.AddHours(duur + 8));

            Assert.IsTrue(limos.Count == 1);
            Assert.IsTrue(limos[0].Id == 1);

            limos = rm.GeefBeschikbareLimousinesVoorPeriode(startMoment2.AddHours(-10), startMoment2.AddHours(-6));
            Assert.IsTrue(limos.Count == 1);
            Assert.IsTrue(limos[0].Id == 2);

            limos = rm.GeefBeschikbareLimousinesVoorPeriode(startMoment2.AddHours(-10), startMoment2.AddHours(-5));
            Assert.IsTrue(limos.Count == 0);

            limos = rm.GeefBeschikbareLimousinesVoorPeriode(startMoment1.AddHours(5), startMoment1.AddHours(8));
            Assert.IsTrue(limos.Count == 0);
        }