Example #1
0
        public Reservatie Reserveer(Klant klant, IEnumerable <Korting> kortingen, DateTime dag, int beginUur, int aantalUren, int aantalPersonen, Catering catering, bool standaardCatering)
        {
            //implementeer
            IEnumerable <Reservatie> reservaties = GetReservatiesVoorDag(dag.Date);
            int tot = beginUur + aantalUren;

            if (dag.Date < DateTime.Today.AddDays(1))
            {
                throw new ArgumentException("Een vergaderruimte dient minstens 1 dag op voorhand te worden gereserveerd");
            }
            if (aantalUren < 2)
            {
                throw new ArgumentException("Een vergaderruimte dient minstens voor 2u te worden gereserveerd");
            }
            if (beginUur < 8 || tot > 22)
            {
                throw new ArgumentException("Ruimte kan gereserveerd worden van 8u tot 22u");
            }
            if (reservaties.Any(r => beginUur < r.Tot && tot > r.BeginUur))
            {
                throw new ArgumentException("De vergaderruimte is niet meer beschikbaar op opgegeven tijdstip");
            }
            if (aantalPersonen > MaximumAantalPersonen)
            {
                throw new ArgumentException("De vergaderruimte is te klein voor opgegeven aantal personen");
            }
            if (catering != null && dag < DateTime.Today.AddDays(7))
            {
                throw new ArgumentException("Catering dient minstens 1 week op voorhand te worden gereserveerd");
            }
            Reservatie reservatie = new Reservatie()
            {
                Dag = dag, BeginUur = beginUur, DuurInUren = aantalUren, AantalPersonen = aantalPersonen, Catering = catering, PrijsPerUur = PrijsPerUur
            };

            if (standaardCatering)
            {
                reservatie.PrijsPerPersoonStandaardCatering = PrijsPerPersoonStandaardCatering;
            }
            if (catering != null)
            {
                reservatie.PrijsPerPersoonCatering = catering.PrijsPerPersoon;
            }
            Reservaties.Add(reservatie);
            klant.VoegReservatieToe(reservatie);
            int aantalReservaties = klant.GetAantalReservaties(dag.Date.Year);

            reservatie.Korting = GetKorting(kortingen, aantalReservaties);
            return(reservatie);
        }
Example #2
0
 public void VoegReservatieToe(Reservatie reservatie)
 {
     Reservaties.Add(reservatie);
 }