예제 #1
0
        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);
        }