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()); }
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()); }