public ArticleDetailResultDto GetDetail(ArticleGetDetailQuery query) { var articleId = new ArticleId(query.ArticleId); var article = articleRepository.Find(articleId); var transformer = new ArticleToDtoTransformer(); var dto = article.Match(x => Option <ArticleDto> .Create(x.Transform(transformer)), Option <ArticleDto> .None); return(new ArticleDetailResultDto(dto)); }
public ActionResult Detail(long?id) { if (!id.HasValue) { return(RedirectToAction("MyList")); } var articleId = id.Value; var query = new ArticleGetDetailQuery(articleId); var detailResult = articleService.GetDetail(query); var optArticle = detailResult.Article; var article = optArticle.Match( x => new ArticleDto(x.Id, x.Title, x.Body), () => throw new TargetIdNotFoundException(articleId) ); return(View(article)); }