Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
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);
        }
Пример #5
0
        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());
 }
Пример #7
0
 public ICollection <Reservatie> GeeftReservatiesVanEenBepaaldeTijd(DateTime start)
 {
     return(Reservaties.Where(r => r.StartDatum <= start && (!(r.ReservatieState is Opgehaald || r.ReservatieState is Overruled))).ToList());
 }