public async Task <IActionResult> OnGetAsync(string category = null, string permalink = null, string language = null)
        {
            IEnumerable <TrackItem> documents;

            if (String.IsNullOrEmpty(category))
            {
                documents = await repository.GetDocuments(d => d.ListName == ListName);

                ArticleKey      = "wanderungen";
                OverviewArticle = await articleRepository.GetDocumentByKey(ArticleKey);

                Tracks = documents.OrderByDescending(d => d.Date);
                this.ViewData["Title"]       = ListName;
                this.ViewData["Description"] = "Wandern in der Eifel, im Bergischen Land, Siebengebirge, am Rhein und auf Reisen";
                await this.LogGetActivity();
            }
            else if (String.IsNullOrEmpty(permalink))
            {
                string categoryLower = category.ToLower();
                documents = await repository.GetDocuments(d => d.ListName == ListName && d.Category.ToLower() == categoryLower);

                ArticleKey      = "wanderungen-" + categoryLower;
                OverviewArticle = await articleRepository.GetDocumentByKey(ArticleKey);

                if (null == OverviewArticle)
                {
                    OverviewArticle = await articleRepository.GetDocumentByKey("wanderungen");
                }
                Tracks = documents.OrderByDescending(d => d.Date);
                this.ViewData["Title"]       = $"{ListName} - {category}";
                this.ViewData["Description"] = $"Wanderungen - {category}";
                await this.LogActivity(categoryLower);
            }
            else
            {
                string categoryLower  = category.ToLower();
                string permaLinkLower = permalink.ToLower();
                ReferencedTrack = (await repository.GetDocuments(d => d.ListName == ListName && d.Category.ToLower() == categoryLower && d.UrlTitle == permaLinkLower)).OrderByDescending(d => d.Date).FirstOrDefault();
                if (ReferencedTrack == null)
                {
                    return(new NotFoundResult());
                }
                ReferencedTrack.Language = "de";
                if (!String.IsNullOrEmpty(language))
                {
                    ReferencedTrack.Language    = language;
                    ReferencedTrack.Description = await _functionSiteTools.Translate(language, ReferencedTrack.Description);
                }
                this.ViewData["Title"]       = ReferencedTrack.Title;
                this.ViewData["Description"] = "Die Beschreibung zur Wanderung.";
                await this.LogActivity($"{categoryLower}/{permaLinkLower}");
            }
            Categories = await categoryRepository.GetDocuments(d => d.ListName == CategoryListName);

            CategoriesDisplay = Categories.ToDictionary(t => t.Category, t => t.CategoryDisplay ?? t.Category);
            if (null != Tracks)
            {
                foreach (TrackItem track in Tracks)
                {
                    if (CategoriesDisplay.ContainsKey(track.Category))
                    {
                        track.CategoryDisplay = CategoriesDisplay[track.Category];
                    }
                    else
                    {
                        track.CategoryDisplay = track.Category;
                    }
                }
            }
            return(Page());
        }
Example #2
0
        public async Task <IActionResult> OnGetAsync(string category = null, string permalink = null, string language = null)
        {
            IEnumerable <TrackItem> documents;

            if (String.IsNullOrEmpty(category))
            {
                return(RedirectToPage("./Ausfahrten"));
            }
            else if (String.IsNullOrEmpty(permalink))
            {
                string tourSetLower = category.ToLower();
                TourSet   = category;
                documents = await repository.GetDocuments(d => d.TourSet.ToLower() == tourSetLower);

                if (documents.Count() == 0)
                {
                    return(new NotFoundResult());
                }
                ArticleKey      = "tourset-" + tourSetLower;
                OverviewArticle = await articleRepository.GetDocumentByKey(ArticleKey);

                Tracks = documents.OrderBy(d => d.Date);
                if (null != OverviewArticle)
                {
                    this.ViewData["Title"] = OverviewArticle.Title;
                    if (!String.IsNullOrEmpty(OverviewArticle.PlainSummary))
                    {
                        this.ViewData["Description"] = OverviewArticle.PlainSummary;
                    }
                }
                await this.LogActivity(tourSetLower);
            }
            else
            {
                string categoryLower  = category.ToLower();
                string permaLinkLower = permalink.ToLower();
                ReferencedTrack = (await repository.GetDocuments(d => d.UrlTitle == permaLinkLower)).OrderByDescending(d => d.Date).FirstOrDefault();
                if (ReferencedTrack == null)
                {
                    return(new NotFoundResult());
                }
                ReferencedTrack.Language = "de";
                if (!String.IsNullOrEmpty(language))
                {
                    ReferencedTrack.Language    = language;
                    ReferencedTrack.Description = await _functionSiteTools.Translate(language, ReferencedTrack.Description);
                }
                this.ViewData["Title"] = ReferencedTrack.Title;
                if (!String.IsNullOrEmpty(ReferencedTrack.PlainDescription))
                {
                    this.ViewData["Description"] = ReferencedTrack.PlainDescription;
                }
                await this.LogActivity($"{categoryLower}/{permaLinkLower}");
            }

            Categories = await categoryRepository.GetDocuments(d => d.ListName == CategoryListName);

            CategoriesDisplay = Categories.ToDictionary(t => t.Category, t => t.CategoryDisplay ?? t.Category);
            if (null != Tracks)
            {
                foreach (TrackItem track in Tracks)
                {
                    if (CategoriesDisplay.ContainsKey(track.Category))
                    {
                        track.CategoryDisplay = CategoriesDisplay[track.Category];
                    }
                    else
                    {
                        track.CategoryDisplay = track.Category;
                    }
                }
            }
            return(Page());
        }