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 void VerwijderReservatie(Reservatie r) { if (Reservaties.Contains(r)) { Reservaties.Remove(r); } else { throw new ArgumentException("Er is geen reservatie om te verwijderen"); } }
private void MaakNieuweReservatieVoorStudent(Reservatie laatsReservatie, int verschil) { Student student = laatsReservatie.Gebruiker as Student; //Dit zou nooit moeten kunnen voorvallen //Toch voor de zekerheid opvangen if (student == null) { throw new ArgumentNullException("Gebruiken is null"); } IDictionary <Materiaal, int> nieuw = new Dictionary <Materiaal, int>(); nieuw.Add(laatsReservatie.Materiaal, verschil); student.MaakReservaties(nieuw, laatsReservatie.StartDatum.ToShortDateString()); }
public void AddReservatie(Reservatie reservatie) { Reservaties.Add(reservatie); }
private void BerekenenOverrulenEnBlokkeren(Materiaal mat, int reserveerAantal, int aantalBeschikbaar, DateTime start, string[] geblokkeerdeDagen) { //Hier berekenen we hoeveel stuks we nog moeten Overrulen int aantal = reserveerAantal - aantalBeschikbaar; List <Reservatie> reservatiePool = new List <Reservatie>(); //We vragen alle reservaties op van het materiaal tijdens de week dat we een reservatie willen doen reservatiePool = mat.GeeftReservatiesVanEenBepaaldeTijd(start) as List <Reservatie>; reservatiePool.Sort((r1, r2) => r1.CompareTo(r2)); //We gaan een while lus willen starten omdat het kan zijn dat er verschillende gebruikers hun reservatie kwijtgeraken bool flag = false; while (!flag) { //Eerst kijken of er nog reservaties in de pool zitten die we gaan kunnen overrulen if (reservatiePool.Count == 0) { break; } //De laatste Reservatie opvragen die er bij gekomen is Reservatie laatsteReservatie = reservatiePool.LastOrDefault(r => r is ReservatieStudent); if (laatsteReservatie == null) { break; } //kijken heeft die genoeg stuks om het materiaal te kunnen reserveren if (aantal <= laatsteReservatie.AantalGereserveerd) { //nu gaan we kijken of er nog over zijn in de reservatie int verschil = laatsteReservatie.AantalGereserveerd - aantal; ////Originele aantal wordt vermindert van de laatste reservatie laatsteReservatie.AantalGereserveerd -= verschil; if (!(laatsteReservatie is BlokkeringLector)) { //Blijft er nog over dan wordt er een nieuwe reservatie gemaakt voor student if (verschil > 0) { MaakNieuweReservatieVoorStudent(laatsteReservatie, verschil); } OverrulenVanReservatie(laatsteReservatie); OverruledeReservaties.Add(laatsteReservatie); } //aantal wordt op nul gezet, want er zijn geen materialen meer te overrulen aantal = 0; } else { if (!(laatsteReservatie is BlokkeringLector)) { //overrulen van de reservatie OverrulenVanReservatie(laatsteReservatie); OverruledeReservaties.Add(laatsteReservatie); } //Nu moeten we nog berekenen wat er nog overblijft aantal -= laatsteReservatie.AantalGereserveerd; //De laatstereservatie moet nu uit de lijst met potentiele reservatie verwijdert worden reservatiePool.Remove(laatsteReservatie); } //Nu moet er nog een veiligheid in gebouwd worden zodat we nog uit de while lus geraken //als aantal minder dan 0 is moet er niet meer overruult worden if (aantal <= 0) { flag = true; } } }
private void OverrulenVanReservatie(Reservatie laatsReservatie) { //Nu worden volledige reservaties overrult laatsReservatie.Overruul(); }