コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: BlogService.cs プロジェクト: jeremyolu/top-bloggers
        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);
        }