Exemplo n.º 1
0
        public Reservatie(Gebruiker gebruiker, Materiaal materiaal, string startDatum, int aantal)
        {
            if (materiaal == null)
            {
                throw new ArgumentNullException("U heeft nog geen items geselecteerd voor deze reservatie");
            }

            if (gebruiker is Student)
            {
                var week = HulpMethode.GetIso8601WeekOfYear(Convert.ToDateTime(startDatum));
                StartDatum = HulpMethode.FirstDateOfWeekISO8601(DateTime.Now.Year, week);
                EindDatum  = StartDatum.AddDays(4);
            }

            if (gebruiker is Lector)
            {
                StartDatum = Convert.ToDateTime(startDatum);
                EindDatum  = Convert.ToDateTime(HulpMethode.GetEindDatum(startDatum));
            }

            Materiaal          = materiaal;
            AantalGereserveerd = aantal;
            Gebruiker          = gebruiker;
            GeblokkeerdeDagen  = new List <Dag>();
            AanmaakDatum       = DateTime.Now;
        }
Exemplo n.º 2
0
        public void MaakBlokkeringen(IDictionary <Materiaal, int> potentieleReservaties, string startDatum, string[] dagen)
        {
            //Het converten van string naar DateTime
            DateTime start = HulpMethode.GetStartDatum(startDatum);
            DateTime einde = HulpMethode.GetEindDatum(startDatum);

            OverruledeReservaties = new List <Reservatie>();
            IDictionary <DateTime, IList <string> > dagenGeblokkeerd = verdeelDagenOverWeken(dagen);

            foreach (var pair in dagenGeblokkeerd)
            {
                string   startDate         = HulpMethode.DateToString(pair.Key);
                string[] geblokkeerdeDagen = pair.Value.ToArray();

                //Overlopen van map met potentiele reserveringen/blokkeringen/overrulingen
                foreach (KeyValuePair <Materiaal, int> potentiele in potentieleReservaties)
                {
                    //Aantal Lokale variabele aanmaken die we nodig hebben
                    Materiaal mat             = potentiele.Key;
                    int       reserveerAantal = potentiele.Value;

                    //opvragen van het aantal reservaties die niet geblokkeerd, opgehaald of overruult zijn
                    int aantalBeschikbaar = mat.GeefAantalBeschikbaarVoorBlokkering();

                    //Eerst gaan we kijken of er nog genoeg beschikbaar zijn om gwn te reserveren
                    //we vergelijken de aantal beschikbare stuks voor het materiaal met het aantal dat we nodig hebben voor onze reservatie
                    //Zo ja maken we gwn reservaties (lectoren blokkeren altijd!!)
                    //Zo niet gaan we over tot het overrulen van reservaties
                    if (aantalBeschikbaar >= reserveerAantal)
                    {
                        //Aanmaken van reservaties
                        VoegReservatieToe(mat, reserveerAantal, startDate, geblokkeerdeDagen);
                    }
                    else
                    {
                        //Overrulen
                        BerekenenOverrulenEnBlokkeren(mat, reserveerAantal, aantalBeschikbaar, start, geblokkeerdeDagen);

                        //Aanmaken van reservaties (overrulen betekend dat lector altijd zal kunnen reserveren)
                        VoegReservatieToe(mat, reserveerAantal, startDate, geblokkeerdeDagen);
                    }
                }
            }
        }