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 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(); } }