//ontleningen beheren public decimal Terugbrengen(Lid lid, Int32 exemplaarId, DateTime tot) { decimal _boetebedrag = 0.0M; //business opstarten Ontlening ontlening = lid.Terugbrengen(exemplaarId, tot); //saldo lid wordt indien nodig aangepast! Boete boete = ontlening.Boete; if (boete != null) { _boetebedrag = boete.Bedrag; } else { _boetebedrag = 0; } //gewijzigde objecten ook doorspelen aan db!!! if (boete != null) { Persistence.Controller.UpdateSaldoLidInDB(lid); } Persistence.Controller.DeleteOntleningFromDB(ontlening); return(_boetebedrag); }
//methods internal Boete Terugbrengen(DateTime tot) { Tot = tot; Exemplaar.SetStatus(OntleenStatus.Beschikbaar); Boete = Boete.BerekenBoete(this); return(Boete); }
//method public static Boete BerekenBoete(Ontlening ontlening) { Boete boete = null; decimal bedrag = 0.0M; Item t = ontlening.Exemplaar.Item; int aantalDagenOK = t.OntleenTermijn; TimeSpan ontleenPeriode = ontlening.Tot - ontlening.Vanaf; int aantalDagenOntleend = ontleenPeriode.Days; int aantalBegonnenWekenTeLaat = (int)Math.Ceiling((aantalDagenOntleend - aantalDagenOK) / 7.0); if (aantalDagenOntleend > aantalDagenOK) { decimal basisBedragPerWeek = t.BoeteTarief; bedrag = aantalBegonnenWekenTeLaat * t.BoeteTarief; boete = new Boete(bedrag); } return(boete); }
/// <summary> /// Terugbrengen van een ontleend exemplaar door een lid /// </summary> /// <param name="exemplaar"></param> /// <param name="tot"></param> /// <returns>De boete die eventueel moet betaald worden (null indien geen boete).</returns> internal Ontlening Terugbrengen(Int32 exemplaarId, DateTime tot) { Ontlening ontlening = Ontleningen.Find(o => o.Exemplaar.Id == exemplaarId); if (ontlening == null) { throw new InvalidOperationException("Dit exemplaar is niet ontleend door dit lid"); } Boete boete = ontlening.Terugbrengen(tot); if (boete != null) { Saldo += boete.Bedrag; } Ontleningen.Remove(ontlening); return(ontlening); }