Ejemplo n.º 1
0
        public async Task <List <Baan> > GetBanenByDateAsync(Guid verenigingId, Guid accommodatieId, DateTime date)
        {
            if (_cachedBanen == null)
            {
                _cachedBanen = new List <Baan>();
                ObservableCollection <Baan> banen = await _baanService.GetBanenAsync(verenigingId, accommodatieId);

                foreach (Baan baan in banen)
                {
                    if (!_cachedBanen.Any(b => b.Id == baan.Id))
                    {
                        _cachedBanen.Add(baan);
                    }
                }
            }

            if (_cachedBaanblokken == null || _cachedBaanblokken.Count == 0)
            {
                _cachedBaanblokken = new List <Baanblok>();
                //Guid accommodatieId = Guid.Empty;
                foreach (Baan baan in _cachedBanen)
                {
                    if (accommodatieId == Guid.Empty || accommodatieId != baan.AccommodatieId)
                    {
                        accommodatieId = baan.AccommodatieId;
                        ObservableCollection <Baanblok> baanblokken = await _baanService.GetBaanblokkenAsync(verenigingId, baan.AccommodatieId);

                        foreach (Baanblok baanblok in baanblokken)
                        {
                            if (!_cachedBaanblokken.Any(b => b.Id == baanblok.Id))
                            {
                                _cachedBaanblokken.Add(baanblok);
                            }
                        }
                    }
                }
            }

            if (_cachedBaansoorten == null || _cachedBaansoorten.Count == 0)
            {
                _cachedBaansoorten = new List <Baansoort>();

                foreach (Baanblok baanblok in _cachedBaanblokken)
                {
                    if (baanblok.BaansoortId.HasValue)
                    {
                        Baansoort baansoort = null;
                        if (!_cachedBaansoorten.Any(b => b.Id == baanblok.BaansoortId.Value))
                        {
                            baansoort = await _baanService.GetBaansoortAsync(verenigingId, baanblok.AccommodatieId.Value, baanblok.BaansoortId.Value);
                        }

                        if (baansoort != null)
                        {
                            _cachedBaansoorten.Add(baansoort);
                        }
                    }
                }
            }

            if (_cachedBaantypes == null || _cachedBaansoorten.Count == 0)
            {
                _cachedBaantypes = new List <Baantype>();

                foreach (Baanblok baanblok in _cachedBaanblokken)
                {
                    if (baanblok.BaantypeId.HasValue)
                    {
                        Baantype baantype = null;
                        if (!_cachedBaantypes.Any(b => b.Id == baanblok.BaantypeId.Value))
                        {
                            baantype = await _baanService.GetBaantypeAsync(verenigingId, baanblok.AccommodatieId.Value, baanblok.BaantypeId.Value);
                        }

                        if (baantype != null)
                        {
                            _cachedBaantypes.Add(baantype);
                        }
                    }
                }
            }

            foreach (Baan baan in _cachedBanen)
            {
                Baanblok blok = _cachedBaanblokken.SingleOrDefault(b => b.Id == baan.BaanblokId);

                if (blok != null)
                {
                    Baantype  type  = _cachedBaantypes.SingleOrDefault(b => b.Id == blok.BaantypeId.Value);
                    Baansoort soort = _cachedBaansoorten.SingleOrDefault(b => b.Id == blok.BaansoortId.Value);

                    baan.Locatie     = blok.Locatie;
                    baan.Verlichting = blok.Verlichting;

                    if (type != null)
                    {
                        baan.Type = type.Naam;
                    }

                    if (soort != null)
                    {
                        baan.Soort = soort.Naam;
                    }
                }
            }

            if (_cachedBaanschema == null)
            {
                _cachedBaanschema = new List <Baanschema>();
            }

            ObservableCollection <Baanschema> baanschemas = await _baanService.GetBaanschemaByDateAsync(verenigingId, date);

            foreach (Baanschema baanschema in baanschemas)
            {
                if (!_cachedBaanschema.Any(b => b.Id == baanschema.Id))
                {
                    _cachedBaanschema.Add(baanschema);
                }
            }

            if (_cachedBaanschema.Count > 0)
            {
                var beschikbaar = _cachedBaanschema.Where(s => s.Dag.HasFlag(date.DayOfWeek) && s.DagBegin <= DateTime.Now.TimeOfDay && s.DagEinde >= DateTime.Now.TimeOfDay).Select(s => s.BaanId);
                return(_cachedBanen.Where(b => beschikbaar.Contains(b.Id)).OrderBy(b => b.Nummer).ToList());
            }

            return(_cachedBanen);
        }
Ejemplo n.º 2
0
        public async Task <Baan> GetBaanAsync(Guid verenigingId, Guid accommodatieId, Guid baanId)
        {
            if (_cachedBanen == null)
            {
                _cachedBanen = new List <Baan>();
                ObservableCollection <Baan> banen = await _baanService.GetBanenAsync(verenigingId, accommodatieId);

                foreach (Baan baan in banen)
                {
                    if (!_cachedBanen.Any(b => b.Id == baan.Id))
                    {
                        _cachedBanen.Add(baan);
                    }
                }
            }

            if (_cachedBaanblokken == null)
            {
                _cachedBaanblokken = new List <Baanblok>();
                accommodatieId     = Guid.Empty;
                foreach (Baan baan in _cachedBanen)
                {
                    if (accommodatieId == Guid.Empty || accommodatieId != baan.AccommodatieId)
                    {
                        accommodatieId = baan.AccommodatieId;
                        ObservableCollection <Baanblok> baanblokken = await _baanService.GetBaanblokkenAsync(verenigingId, baan.AccommodatieId);

                        foreach (Baanblok baanblok in baanblokken)
                        {
                            if (!_cachedBaanblokken.Any(b => b.Id == baanblok.Id))
                            {
                                _cachedBaanblokken.Add(baanblok);
                            }
                        }
                    }
                }
            }

            if (_cachedBaansoorten == null)
            {
                _cachedBaansoorten = new List <Baansoort>();

                foreach (Baanblok baanblok in _cachedBaanblokken)
                {
                    if (baanblok.BaansoortId.HasValue)
                    {
                        Baansoort baansoort = null;
                        if (!_cachedBaansoorten.Any(b => b.Id == baanblok.BaansoortId.Value))
                        {
                            baansoort = await _baanService.GetBaansoortAsync(verenigingId, baanblok.AccommodatieId.Value, baanblok.BaansoortId.Value);
                        }

                        if (baansoort != null)
                        {
                            _cachedBaansoorten.Add(baansoort);
                        }
                    }
                }
            }

            if (_cachedBaantypes == null)
            {
                _cachedBaantypes = new List <Baantype>();

                foreach (Baanblok baanblok in _cachedBaanblokken)
                {
                    if (baanblok.BaantypeId.HasValue)
                    {
                        Baantype baantype = null;
                        if (!_cachedBaantypes.Any(b => b.Id == baanblok.BaantypeId.Value))
                        {
                            baantype = await _baanService.GetBaantypeAsync(verenigingId, baanblok.AccommodatieId.Value, baanblok.BaantypeId.Value);
                        }

                        if (baantype != null)
                        {
                            _cachedBaantypes.Add(baantype);
                        }
                    }
                }
            }

            foreach (Baan baan in _cachedBanen)
            {
                Baanblok blok = _cachedBaanblokken.SingleOrDefault(b => b.Id == baan.BaanblokId);

                if (blok != null)
                {
                    Baantype  type  = _cachedBaantypes.SingleOrDefault(b => b.Id == blok.BaantypeId.Value);
                    Baansoort soort = _cachedBaansoorten.SingleOrDefault(b => b.Id == blok.BaansoortId.Value);

                    baan.Locatie     = blok.Locatie;
                    baan.Verlichting = blok.Verlichting;

                    if (type != null)
                    {
                        baan.Type = type.Naam;
                    }

                    if (soort != null)
                    {
                        baan.Soort = soort.Naam;
                    }
                }
            }

            if (_cachedBaanschema == null)
            {
                _cachedBaanschema = new List <Baanschema>();
            }

            ObservableCollection <Baanschema> baanschemas = await _baanService.GetBaanschemaAsync(verenigingId);

            foreach (Baanschema baanschema in baanschemas)
            {
                if (!_cachedBaanschema.Any(b => b.Id == baanschema.Id))
                {
                    _cachedBaanschema.Add(baanschema);
                }
            }

            return(_cachedBanen.SingleOrDefault(b => b.Id == baanId));
        }