示例#1
0
        public void AddReservation(Dictionary <Materiaal, int> teReserverenMaterialen,
                                   DateTime ophaalDatum, DateTime indienDatum, DateTime today)
        {
            if (teReserverenMaterialen == null || teReserverenMaterialen.Count == 0)
            {
                throw new ArgumentException("Er moet ten minste 1 materiaal gereserveerd worden.");
            }
            if (today > ophaalDatum)
            {
                throw new ArgumentException("De ophaaldatum moet na vandaag zijn.");
            }
            Reservatie reservatie = new Reservatie(this, ophaalDatum, indienDatum);

            reservatie.ReservatieLijnen = new List <ReservatieLijn>();
            foreach (KeyValuePair <Materiaal, int> entry in teReserverenMaterialen)
            {
                Materiaal mat             = entry.Key;
                int       amount          = entry.Value;
                long      availableAmount = GetAmountAvailableForReservation(mat, ophaalDatum, indienDatum);
                if (amount > availableAmount)
                {
                    throw new ArgumentException(string.Format("Het materiaal {0} heeft nog maar {1} exemplaren beschikbaar.", mat.Name, availableAmount));
                }
                reservatie.AddReservationLine(mat, amount, ophaalDatum, indienDatum);
            }
            if (reservatie.ReservatieLijnen.Count == 0)
            {
                throw new ArgumentException("Een reservatie moet minstens één materiaal bevatten.");
            }
            Reservaties.Add(reservatie);
        }
        public override void VoegReservatieToe(Dictionary <Product, int> map, DateTime startDate, DateTime eindDate, Email[] email, bool[] dagen = null)
        {
            EmailService service = new EmailService();
            Reservatie   r       = new Reservatie
            {
                StartDatum       = startDate,
                EindDatum        = eindDate,
                ReservatieStatus = ReservatieStatus.Gereserveerd,
                ReservatieUser   = this,
                AanmaakDatum     = DateTime.Now
            };

            foreach (KeyValuePair <Product, int> entry in map)
            {
                if (entry.Value != 0)
                {
                    if (entry.Value > entry.Key.GeefAantalReserveerbaarInPeriode(startDate, eindDate))
                    {
                        throw new ArgumentOutOfRangeException("Er zijn niet genoeg stuks beschikbaar van  " + entry.Key.Artikelnaam);
                    }
                    else if (entry.Value < 0)
                    {
                        throw new ArgumentOutOfRangeException("U kan geen negatieve waarde toekennen aan  " + entry.Key.Artikelnaam);
                    }
                    r.VoegReservatieLijnToe(entry.Key, entry.Value);
                }
            }
            Reservaties.Add(r);
            service.VerzendEmail(r, this, email[0]);
        }
示例#3
0
        protected override void VoegReservatieToe(Materiaal materiaal, int aantal, string startdatum, string[] dagen = null)
        {
            Reservatie reservatie = MaakReservatieObject(this, materiaal, startdatum, aantal);

            materiaal.AddReservatie(reservatie);
            Reservaties.Add(reservatie);
        }
        public override void VoegReservatieToe(Dictionary <Product, int> map, DateTime van, DateTime tot, Email[] email, bool[] dagen)
        {
            EmailService emailService = new EmailService();
            Blokkering   b            = new Blokkering
            {
                StartDatum       = van,
                EindDatum        = tot,
                ReservatieUser   = this,
                ReservatieStatus = ReservatieStatus.Geblokkeerd,
                AanmaakDatum     = DateTime.Now,
            };
            int i = 0;

            foreach (KeyValuePair <Product, int> entry in map)
            {
                if (entry.Value != 0)
                {
                    if (entry.Value > entry.Key.AantalInCatalogus)
                    {
                        throw new ArgumentOutOfRangeException("Er zijn niet genoeg stuks beschikbaar van " + entry.Key.Artikelnaam);
                    }
                    if (entry.Value < 0)
                    {
                        throw new ArgumentOutOfRangeException("U kan geen negatieve waarde toekennen aan " + entry.Key.Artikelnaam);
                    }
                    if (dagen == null || dagen.All(l => !l))
                    {
                        throw new ArgumentNullException("Selecteer 1 of meerdere dagen voor " + entry.Key.Artikelnaam);
                    }
                    int aantal = entry.Key.GeefAantalReserveerbaarInPeriode(van, tot);
                    if (aantal < entry.Value)
                    {
                        entry.Key.WijzigReservatieAantal(entry.Value - aantal)
                        .ForEach(s => addStudenten(s));
                    }
                    bool[] dagenProduct = new bool[5];
                    Array.Copy(dagen, i, dagenProduct, 0, 5);
                    b.VoegReservatieLijnToe(entry.Key, entry.Value, dagenProduct);
                }
                i += 5;
            }
            Reservaties.Add(b);
            emailService.VerzendEmail(b, this, email[0]);

            studenten.Reverse();
            ApplicationUser[] array = studenten.ToArray();
            for (int j = 0; j < teller; j++)
            {
                if (j == 0)//Wijzigen
                {
                    emailService.VerzendEmail(b, array[j], email[2]);
                }
                else//anuleren
                {
                    emailService.VerzendEmail(b, array[j], email[1]);
                }
            }
        }
 public void VoegReservatieToe(Reservatie reservatie)
 {
     Reservaties.Add(reservatie);
     SaveChanges();
 }
示例#6
0
 public void AddReservatie(Reservatie reservatie)
 {
     Reservaties.Add(reservatie);
 }