public void AddArticle(Article article) { if (article == null) { return; } var customProperties = new Dictionary <string, object> { [nameof(article.Title)] = article.Title, [nameof(article.Author)] = article.Author, [nameof(article.PublicationDate)] = article.PublicationDate }; if (_authorRepository.IsBlackListedAuthor(article.Author)) { throw BusinessValidationException.AuthorIsBlackListed(article.Author, customProperties); } if (_articleRepository.ArticleExists(article)) { throw BusinessException.ArticleExists(article.Title, customProperties); } _articleRepository.AddArticle(article); }