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