Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
 public bool Contains(Materiaal m)
 {
     if (m == null)
     {
         return(false);
     }
     return(Materials.Contains(m));
 }
Esempio n. 5
0
 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);
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
        public void AddReservationLine(Materiaal materiaal, int amount, DateTime ophaalDatum, DateTime indienDatum)
        {
            ReservatieLijn reservatieLijn = new ReservatieLijn(amount, ophaalDatum, indienDatum, materiaal, this);

            ReservatieLijnen.Add(reservatieLijn);
        }
Esempio n. 9
0
 public override bool CanSeeMaterial(Materiaal mat)
 {
     return(mat.IsLendable);
 }
Esempio n. 10
0
 public override bool CanSeeMaterial(Materiaal mat)
 {
     return(true);
 }
Esempio n. 11
0
 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;
 }
Esempio n. 12
0
 public abstract bool CanSeeMaterial(Materiaal mat);