Ejemplo n.º 1
0
        public async Task <IActionResult> GetArticle(Guid articleId)
        {
            //Bad request if no ID specified.
            if (articleId == null)
            {
                return(BadRequest());
            }
            //Get article
            var article = _dbContext.Articles
                          .FirstOrDefault(a => a.Id == articleId);

            //NotFound if not found.
            if (article == null)
            {
                return(NotFound());
            }
            //NotFound if unpublished
            if (article.Status != Status.Published)
            {
                return(NotFound());
            }
            //Map Article entity to GetARticleDto
            var getArticleDto =
                Mapper.Map <GetArticleDto>(article);

            //Read article from disk.
            getArticleDto.ArticleText =
                await _fileRepository.GetArticle(article.ArticlePath);

            //Return Ok with object.
            return(Ok(getArticleDto));
        }
        public async Task <IActionResult> OnGetAsync(Guid id)
        {
            var articleFromEntity = _articleRepository.Read(id);

            if (articleFromEntity == null)
            {
                return(NotFound());
            }

            ArticleViewModel = Mapper.Map <ArticleViewModel>(articleFromEntity);
            ArticleViewModel.AuthorUserName = _userManager.Users.FirstOrDefault(u => u.Id == ArticleViewModel.AuthorId).UserName;
            ArticleViewModel.ArticleText    = await _articleFileRepository.GetArticle(articleFromEntity.ArticleFile);

            return(Page());
        }
        public async Task <IActionResult> OnGetAsync(string topic)
        {
            Topic = topic;
            var articlesFromEntities = _articleRepository.GetByTopic(topic);

            Articles = Mapper.Map <IEnumerable <ArticleViewModel> >(articlesFromEntities);
            foreach (var a in Articles)
            {
                a.AuthorUserName = _userManager.Users.FirstOrDefault(u => u.Id == a.AuthorId).UserName;
                var path = articlesFromEntities.FirstOrDefault(art => art.Id == a.ArticleId).ArticleFile;
                a.ArticleText = await _articleFileRepository.GetArticle(path);
            }

            return(Page());
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> OnGetAsync(DateTime date, int index = 0)
        {
            var articlesFromEntities = _articleRepository
                                       .GetByDate(date)
                                       .OrderByDescending(a => a.PublishDate)
                                       .ToArray();

            Articles = new List <ArticleViewModel>();
            var max = index + 9 >= articlesFromEntities.Count() ? articlesFromEntities.Count() : index + 9;

            for (var i = index; i < max; i++)
            {
                var articleViewModel = Mapper.Map <ArticleViewModel>(articlesFromEntities[i]);
                articleViewModel.ArticleText = await _articleFileRepository.GetArticle(articlesFromEntities[i].ArticleFile);

                Articles.Add(articleViewModel);
            }
            return(Page());
        }
        public async Task <IActionResult> PreviewArticle(Guid id)
        {
            var htmlSanitizer = new HtmlSanitizer();                            //HtmlSanitizer
            var articleEntity = _dbContext.Articles                             //Get articles that matches Id.
                                .FirstOrDefault(a => a.Id == id);

            if (articleEntity == null)                                          //if null return NotFound
            {
                return(NotFound());
            }
            var articleText = await _fileRepository                             //Read the article from the file.
                              .GetArticle(articleEntity.ArticlePath);

            articleText = htmlSanitizer                                         //Convert article MarkDown and sanitize
                          .SanitizeDocument(MarkdownParser.Parse(articleText).ToString());
            var articleDto = Mapper.Map <GetArticleDto>(articleEntity);         //Map article entity to Article Dto

            articleDto.ArticleText = articleText;                               //Add text to article Dto
            return(View(articleDto));                                           //Return dto.
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> OnGetAsync(int index = 0)
        {
            var articleEntires = _articleRepository
                                 .GetAll()
                                 .Where(a => a.Status == Status.Published)
                                 .OrderByDescending(a => a.PublishDate)
                                 .ToArray();

            ArticleViewModels = new List <ArticleViewModel>();
            var max = index + 9 >= articleEntires.Count() ? articleEntires.Count() : index + 9;

            for (var i = index; i < max; i++)
            {
                var articleViewModel = Mapper.Map <ArticleViewModel>(articleEntires[i]);
                articleViewModel.AuthorUserName = _userManager.Users.FirstOrDefault(u => u.Id == articleEntires[i].AuthorId).UserName;
                articleViewModel.ArticleText    = await _articleFileRepository.GetArticle(articleEntires[i].ArticleFile);

                ArticleViewModels.Add(articleViewModel);
            }
            return(Page());
        }
        /// <summary>
        /// Display a published article
        /// </summary>
        /// <param name="id">id of article</param>
        /// <returns>View of article</returns>
        public async Task <IActionResult> Article(Guid id)
        {
            var htmlSanitizer = new HtmlSanitizer();                    //HTML sanitizer
            var articleEntity = _dbContext.Articles                     //Get article
                                .FirstOrDefault(a => a.Id == id);

            if (articleEntity == null)                                  //if null return NotFound
            {
                return(NotFound());
            }
            else if (articleEntity.Status != Status.Published)          //If not published return NotFound
            {
                return(NotFound());
            }
            var articleDto =                                            //Map to Dto
                             Mapper.Map <GetArticleDto>(articleEntity);
            var articleText = await _fileRepository                     //Load article file
                              .GetArticle(articleEntity.ArticlePath);

            articleText            = MarkdownParser.Parse(articleText).ToString(); //Parse MarkDown
            articleDto.ArticleText = htmlSanitizer                                 //Sanatize and add to DTO
                                     .SanitizeDocument(articleText);
            return(View(articleDto));                                              //return view of DTO
        }
        public async Task <IActionResult> PreviewArticle(Guid id)
        {
            var htmlSanitizer = new HtmlSanitizer();            //HTML Sanitizer
            var userEntity    = await _userManager              //Get logged in user's db entry
                                .GetUserAsync(User);

            var articleInfo = _dbContext.Articles                           //Get all articles
                              .FirstOrDefault(a => a.Id == id &&            //That match the Id in the route
                                              a.AuthorId == userEntity.Id); //and is submited by current user

            if (articleInfo == null)                                        //if null return not found
            {
                return(NotFound());
            }
            var articleText = await _fileRepository             //Read article file from disk
                              .GetArticle(articleInfo.ArticlePath);

            articleText = MarkdownParser                        //parse markdown
                          .Parse(articleText)
                          .ToString();
            articleText = htmlSanitizer                         //sanitize
                          .SanitizeDocument(articleText);
            return(View(articleText));                          //return View of Article Dto
        }