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 CreateNewReservation(int reservatieID, Klant klant, DateTime datum, Locaties ophaalLocatie, Locaties afzetLocatie, Voertuig gereseveerdeVoortuig, Arrangement arrangement, int aantalUren)
        {
            decimal subtotaal             = 0;
            decimal aangerekendeKortingen = 0;
            decimal totaalExclusiefBtw    = 0;
            decimal btwBedrag             = 0;
            decimal teBetalenBedrag       = 0;

            //calculate subtotal price
            if (arrangement == Arrangement.NightLife)
            {
                subtotaal = gereseveerdeVoortuig.NightLife;
            }
            else if (arrangement == Arrangement.Wellness)
            {
                subtotaal = gereseveerdeVoortuig.Wellness;
            }
            else if (arrangement == Arrangement.Wedding)
            {
                subtotaal = gereseveerdeVoortuig.Wedding;
            }
            else
            {
                subtotaal  = gereseveerdeVoortuig.EersteUur;
                subtotaal += Math.Round(((gereseveerdeVoortuig.EersteUur * aantalUren - 1) / 100) * 65);
            }

            //add discount to subtotal and btw
            aangerekendeKortingen = GetDiscount(klant.Type);
            totaalExclusiefBtw    = ((subtotaal / 100) * aangerekendeKortingen) - subtotaal;

            btwBedrag = (totaalExclusiefBtw / 100) * 6;

            teBetalenBedrag = totaalExclusiefBtw + btwBedrag;

            Reservatie r = new Reservatie(reservatieID, klant, datum, ophaalLocatie, afzetLocatie, gereseveerdeVoortuig, arrangement, aantalUren, subtotaal, aangerekendeKortingen, totaalExclusiefBtw, btwBedrag, teBetalenBedrag);

            Reservaties.Add(r);
        }
        public Reservatie CalculatePriceForPreview(Klant klant, DateTime datum, Locaties ophaalLocatie, Locaties afzetLocatie, Voertuig gereseveerdeVoortuig, Arrangement arrangement, int aantalUren)
        {
            decimal subtotaal             = 0;
            decimal aangerekendeKortingen = 0;
            decimal totaalExclusiefBtw    = 0;
            decimal btwBedrag             = 0;
            decimal teBetalenBedrag       = 0;

            //calculate subtotal price
            if (arrangement == Arrangement.NightLife)
            {
                subtotaal = gereseveerdeVoortuig.NightLife;
                if (aantalUren > 7)
                {
                    int aantalOveruren = 7 - aantalUren;
                    subtotaal += aantalOveruren * (gereseveerdeVoortuig.EersteUur * 1.4m);
                }
            }
            else if (arrangement == Arrangement.Wellness)
            {
                subtotaal = gereseveerdeVoortuig.Wellness;
                if (datum.Hour == 12 && aantalUren == 10)// 1 nachtuur mogelijk
                {
                    subtotaal += gereseveerdeVoortuig.EersteUur * 1.4m;
                }
            }
            else if (arrangement == Arrangement.Wedding)
            {
                subtotaal = gereseveerdeVoortuig.Wedding;
                int einduur = datum.Hour + aantalUren;

                if (einduur >= 22 && aantalUren > 7)
                {
                    int nachturen = einduur - 21;
                    subtotaal += nachturen * (gereseveerdeVoortuig.EersteUur * 0.65m);
                }
            }
            else
            {
                subtotaal = gereseveerdeVoortuig.EersteUur;
                int aantalNachturen = 0;
                if (datum.Hour + aantalUren >= 22)
                {
                    aantalNachturen = (datum.Hour + aantalUren) - 21;
                    if (aantalNachturen > 9)
                    {
                        aantalNachturen = 9;
                    }

                    subtotaal += aantalNachturen * gereseveerdeVoortuig.EersteUur * 1.4m;
                }
                aantalNachturen += 1;

                subtotaal += Math.Round((gereseveerdeVoortuig.EersteUur * (aantalUren - aantalNachturen)) * 0.65m);
            }

            //add discount to subtotal and btw
            aangerekendeKortingen = GetDiscount(klant.Type, klant.Naam, datum);
            totaalExclusiefBtw    = subtotaal - ((subtotaal / 100) * aangerekendeKortingen);

            btwBedrag = totaalExclusiefBtw * 0.06m;

            teBetalenBedrag = totaalExclusiefBtw + btwBedrag;

            Reservatie r = new Reservatie(klant, datum, ophaalLocatie, afzetLocatie, gereseveerdeVoortuig, arrangement, aantalUren, subtotaal, aangerekendeKortingen, totaalExclusiefBtw, btwBedrag, teBetalenBedrag);

            return(r);
        }
 private void VoegReservatieToe(Reservatie reservatie)
 {
     Handler.VoegReservatieToe(reservatie);
 }
 public void CreateNewReservation(Reservatie r)
 {
     uow.Reservaties.AddReservatie(r);
     uow.Complete();
 }