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 void AddToWishList(Materiaal mat) { if (mat == null || !CanSeeMaterial(mat)) { throw new ArgumentException("Het materiaal dat je wenste toe te voegen aan je verlanglijstje is niet beschikbaar."); } WishList.AddMaterial(mat); }
public void RemoveFromWishList(Materiaal mat) { if (mat == null) { throw new ArgumentException("Het materiaal dat je wenste te verwijderen uit je verlanglijstje is niet beschikbaar."); } WishList.RemoveMaterial(mat); }
public bool Contains(Materiaal m) { if (m == null) { return(false); } return(Materials.Contains(m)); }
public void AddMaterial(Materiaal material) { if (material != null && Materials.FirstOrDefault(m => m.Name == material.Name) != null) { throw new ArgumentException("Het materiaal zit al in je verlanglijstje."); } Materials.Add(material); }
private long GetAmountAvailableForReservation(Materiaal mat, DateTime ophaalDatum, DateTime indienDatum) { IEnumerable <ReservatieLijn> reservationLinesWithMaterialThatOverlap = mat.ReservatieLijnen .Where(rl => rl.OphaalMoment <indienDatum && rl.IndienMoment> ophaalDatum).ToList(); long amountReserved = FilterReservatieLijnenDieOveruledKunnenWorden(reservationLinesWithMaterialThatOverlap).Select(rl => rl.Amount).Sum(); long amountAvailable = mat.Amount - mat.AmountNotAvailable - amountReserved; return(amountAvailable); }
public void RemoveMaterial(Materiaal material) { if (material == null) { throw new ArgumentException(string.Format("Het materiaal is niet beschikbaar en kan dus niet verwijderd worden.")); } if (!Materials.Contains(material)) { throw new ArgumentException(string.Format("Je verlanglijstje bevat het materiaal {0} niet.", material.Name)); } Materials.Remove(material); }
public void AddReservationLine(Materiaal materiaal, int amount, DateTime ophaalDatum, DateTime indienDatum) { ReservatieLijn reservatieLijn = new ReservatieLijn(amount, ophaalDatum, indienDatum, materiaal, this); ReservatieLijnen.Add(reservatieLijn); }
public override bool CanSeeMaterial(Materiaal mat) { return(mat.IsLendable); }
public override bool CanSeeMaterial(Materiaal mat) { return(true); }
public ReservatieLijn(int amount, DateTime?ophaalMoment, DateTime?indienMoment, Materiaal mat, Reservatie r) : this() { if (mat == null) { throw new ArgumentNullException("Een materiaal is verplicht."); } if (ophaalMoment == null) { throw new ArgumentNullException("Een ophaalmoment is verplicht."); } if (indienMoment == null) { throw new ArgumentNullException("Een indienmoment is verplicht."); } if (amount <= 0) { throw new ArgumentException("Aantal mag niet kleiner of gelijk zijn aan 0."); } if (indienMoment < ophaalMoment) { throw new ArgumentException("Het ophaal moment moet voor het indien moment liggen."); } if (r == null) { throw new ArgumentNullException("Een reservatie is verplicht."); } this.Amount = amount; this.IndienMoment = indienMoment; this.OphaalMoment = ophaalMoment; this.Materiaal = mat; this.Reservatie = r; }
public abstract bool CanSeeMaterial(Materiaal mat);