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