Exemplo n.º 1
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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        private IDictionary <DateTime, IList <string> > verdeelDagenOverWeken(string[] dagen)
        {
            IDictionary <DateTime, IList <string> > dagenGeblokkeerd = new Dictionary <DateTime, IList <string> >();

            foreach (var dag in dagen)
            {
                DateTime startDatum = HulpMethode.GetStartDatum(dag);

                if (!dagenGeblokkeerd.ContainsKey(startDatum))
                {
                    IList <string> dagenInWeek = new List <string>();
                    dagenInWeek.Add(dag);
                    dagenGeblokkeerd.Add(startDatum, dagenInWeek);
                }
                else
                {
                    IList <string> dagenInWeek = dagenGeblokkeerd[startDatum];
                    dagenInWeek.Add(dag);
                    dagenGeblokkeerd[startDatum] = dagenInWeek;
                }
            }

            return(dagenGeblokkeerd);
        }