public Dictionary <DateTime, int[]> MaakLijstReservatieDataSpecifiekeDagen(DateTime[] dagen) { Dictionary <DateTime, int[]> reservatieMap = new Dictionary <DateTime, int[]>(); //De reservaties overlopen en reservatieDataDTO objecten met juiste waarden maken. foreach (var r in Reservaties.Where(r => !(r.ReservatieState is Overruled) && r.Gebruiker is Lector).OrderBy(r => r.StartDatum)) { IList <DateTime> gemeenschappelijkeDagen = r.GeblokkeerdeDagen.Select(g => g.Datum).Intersect(dagen).ToList(); if (gemeenschappelijkeDagen.Any()) { foreach (var dag in gemeenschappelijkeDagen) { reservatieMap = UpdateReservatieMap(reservatieMap, dag, r.AantalGereserveerd); } } } var dagenZonderReservaties = dagen.Where(dag => !Reservaties.Any(r => r.GeblokkeerdeDagen.Select(d => d.Datum).Contains(dag))); foreach (var dag in dagenZonderReservaties) { reservatieMap = UpdateReservatieMap(reservatieMap, dag, 0); } return(reservatieMap); }
public int GeefAantalBeschikbaarVoorBlokkering() { int aantal = AantalInCatalogus - Reservaties.Where(r => r.ReservatieState is Gereserveerd || r.ReservatieState is Geblokkeerd || r.ReservatieState is Opgehaald) .Sum(r => r.AantalGereserveerd); return(aantal <= 0 ? 0 : aantal); }
public int GeefAantalPerStatus(ReservatieState status, DateTime startDatum, DateTime eindDatum) { if (status is Geblokkeerd) { int aantal = Reservaties.Where( r => r.KanOverschrijvenMetReservatie(startDatum, eindDatum) && r.ReservatieState is Geblokkeerd) .Sum(r => r.AantalGereserveerd); return(aantal > AantalInCatalogus ? AantalInCatalogus : aantal); } if (status is Gereserveerd) { return(Reservaties.Where(r => r.StartDatum.Equals(startDatum) && r.ReservatieState is Gereserveerd).Sum(r => r.AantalGereserveerd)); } return(0); }
public Dictionary <DateTime, int[]> MaakLijstReservatieDataInRange(DateTime startDatumFilter, DateTime eindDatumFilter) { Dictionary <DateTime, int[]> reservatieMap = new Dictionary <DateTime, int[]>(); //De reservaties overlopen en reservatieDataDTO objecten met juiste waarden maken. foreach (var r in Reservaties.Where(r => !(r.ReservatieState is Overruled)).OrderBy(r => r.StartDatum)) { if (r.StartDatum >= startDatumFilter && r.StartDatum <= eindDatumFilter) { reservatieMap = UpdateReservatieMap(reservatieMap, r.StartDatum, r.AantalGereserveerd); } } //Voor de data waar geen reservaties zijn worden reservatieDataDTO objecten met standaardWaarden gemaakt. while (startDatumFilter <= eindDatumFilter) { reservatieMap = UpdateReservatieMap(reservatieMap, startDatumFilter, 0); startDatumFilter = startDatumFilter.AddDays(7); } return(reservatieMap); }
public int GeefAantalBeschikbaar(DateTime startDatum, DateTime eindDatum, IList <DateTime> dagen, Gebruiker gebruiker) { int aantal = AantalInCatalogus; if (gebruiker is Lector && dagen != null) { foreach (var dag in dagen) { IEnumerable <Reservatie> overschijvendeReservaties = Reservaties.Where(r => r.GeblokkeerdeDagen.Select(d => d.Datum).Contains(dag)).ToList(); int aantalGereserveerd = overschijvendeReservaties.Sum(r => r.AantalGereserveerd); aantal = Math.Min(aantal, AantalInCatalogus - aantalGereserveerd); } } else if (gebruiker is Student) { aantal = AantalInCatalogus - Reservaties.Where(r => r.KanOverschrijvenMetReservatie(startDatum, eindDatum) && (r.ReservatieState is Geblokkeerd || r.ReservatieState is Gereserveerd)) .Sum(r => r.AantalGereserveerd); } return(aantal <= 0 ? 0 : aantal); }
public int GeefAantalReservatiesVoorKlantInJaar(Klant klant, int jaar) { return(Reservaties.Where(r => r.Klant == klant && r.StartMoment.Year == jaar).Count()); }
public ICollection <Reservatie> GeeftReservatiesVanEenBepaaldeTijd(DateTime start) { return(Reservaties.Where(r => r.StartDatum <= start && (!(r.ReservatieState is Opgehaald || r.ReservatieState is Overruled))).ToList()); }