public async Task <BlogArticleViewModel> GetBlogDetails(int id) { var blogArticle = await repository.QueryByID(id); BlogArticleViewModel blogViewModel = null; if (blogArticle != null) { blogViewModel = mapper.Map <BlogArticleViewModel>(blogArticle); var nextBlog = (await Query(b => b.ID >= id && b.IsDeleted == false, 2, "ID")).ToList(); if (nextBlog.Count == 2) { blogViewModel.NextID = nextBlog[1].ID; blogViewModel.Next = nextBlog[1].Title; } var prevBlog = (await Query(b => b.ID <= id && b.IsDeleted == false, 2, "ID DESC")).ToList(); if (prevBlog.Count == 2) { blogViewModel.PreviousID = prevBlog[1].ID; blogViewModel.Previous = prevBlog[1].Title; } blogArticle.Traffic += 1; await Update(blogArticle, new List <string> { "Traffic" }); } return(blogViewModel); }
public async Task <IActionResult> Edit(int id, BlogArticleViewModel model) { if (id != model.Id) { return(this.NotFound()); } if (this.ModelState.IsValid) { try { await this.blogArticleService.Edit(model.Id, model.Title, model.Content); } catch (DbUpdateConcurrencyException) { if (!await this.blogArticleService.ExistsAsync(model.Id)) { return(this.NotFound()); } else { throw; } } return(this.RedirectToAction("Index", "Home")); } return(this.View(model)); }
public BlogArticleViewModel GetBlogArticleViewModel(int id) { var blogArticle = _blogRepository.GetArticleById(id); if (blogArticle == null) { return(new BlogArticleViewModel()); } var formatTitle = GenerateFriendlyUrl(blogArticle.Title); var authorArticles = _blogRepository.GetArticlesByAuthorId(blogArticle.Author.AuthorID).Where(a => a.BlogArticleID != id).ToList(); var relatedArticles = _blogRepository.GetArticlesByCategoryId(blogArticle.CategoryID).Where(a => a.BlogArticleID != id).ToList(); var author = _authorRepository.GetAuthorById(blogArticle.AuthorID); var authorUrl = $"{author.AuthorID}-{author.Name}{author.Surname}".ToLower(); blogArticle.Title = CapitalizeTitle(blogArticle.Title); var formattedUrl = $"{id}={formatTitle}"; var model = new BlogArticleViewModel { BlogArticle = blogArticle, BlogId = id, AuthorUrl = authorUrl, FormattedTitle = formatTitle, BlogArticleUrl = formattedUrl, AuthorArticles = authorArticles.GenerateArticleUrls(), RelatedArticles = relatedArticles.GenerateArticleUrls() }; _blogRepository.IncrementArticleView(blogArticle); return(model); }